Contenu

Introduction

Conditions préalables

Conditions requises

Components Used

Outils de ligne de commande

Outils de base de données

Introduction

Ce document décrit comment utiliser les outils de dépannage disponibles dans le cadre du déploiement de Field Network Director (FND).La solution FND est de portée étendue et englobe de nombreuses technologies et spécialisations diverses. De ce fait, il existe de nombreux scripts et outils de ligne de commande qui peuvent aider à vérifier le comportement dans une situation donnée ou à diagnostiquer un problème complexe.

Contribué par Ryan Bowman, ingénieur du centre d'assistance technique Cisco.

Conditions préalables

Conditions requises

Cisco vous recommande d'avoir un environnement de production ou de laboratoire entièrement opérationnel avec le routeur principal enregistré (HER), le routeur de zone de terrain et le point d'extrémité de la grille connectée (CGE). Afin de vérifier les statistiques CoAP Simple Management Protocol (CSMP) avec getStats.sh, vous devez avoir au moins un CGE qui génère du trafic CSMP.

Afin d'utiliser les fichiers situés dans le répertoire /opt/cgms-tools/, le package RPM cgms-tools doit être installé sur votre serveur d'applications.

Components Used

Les informations contenues dans ce document ont toutes été rassemblées avec l'utilisation de la version 3.0.1-36 de FND avec tous les serveurs Linux installés sur des machines virtuelles exécutant RHEL 6.5.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Outils de ligne de commande

Cette section couvre les utilitaires CLI disponibles dans le cadre des packages cgms et cgms-tools. Le chemin d'installation par défaut pour le RPM cgms est /opt/cgms/et le chemin d'installation par défaut pour cgms-tools est /opt/cgms-tools/.

setupCgms.sh (/opt/cgms/bin/setupCgms.sh) :

Après la première installation du FND, ce script doit être exécuté afin de configurer les variables d'application nécessaires. Une fois la production démarrée, vous pouvez toujours utiliser cet utilitaire pour modifier les paramètres de configuration critiques. Avant d'exécuter ce script, vous devez arrêter le service cgms, accéder au répertoire /opt/cgms/bin/ et exécuter la commande ./setupCgms.

[root@fnd bin]#./setupCgms.sh

Are you sure you want to setup IoT-FND (y/n)? n

Do you wish to configure another database server for this IoT-FND ? (y/n)? n

Do you want to change the database password (y/n)? n

Do you want to change the keystore password (y/n)? n

Do you want to change the web application 'root' user password (y/n)? n

Do you want to change the FTP settings (y/n)? n

Do you want to change router CGDM protocol settings (y/n)? n

Do you want to change log file settings)? (y/n)? n

getstats.sh (/opt/cgms/bin/getstats.sh) :

Ce script est destiné à être exécuté pendant que l'application est en cours d'exécution. Il est extrêmement utile lorsque vous analysez les performances avec des clusters à charge équilibrée et des paires de bases de données actives/de secours. Chaque mesure de performances dépasse le cadre de cet article, mais voici un exemple de sortie lors de l'exécution du script.

Lorsque vous dépannez des déploiements FND dans un cluster, exécutez ce script sur chaque serveur afin de vérifier que l'équilibrage de charge fonctionne correctement. Si l'un des serveurs d'applications a un taux de traitement CSMP beaucoup plus élevé que les autres, alors l'équilibrage de charge n'est probablement pas configuré correctement. En outre, lorsque vous analysez ce résultat, si vous voyez que la taille de votre file d'attente augmente, alors vous savez qu'il y a un processus de goulot d'étranglement quelque part.

[root@fnd bin]# ./getstats.sh

Current Time: 2017-03-08 01:06

============ events statistics ==============

ElapsedTimePrepareForRules (ms):...........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Events request rate:.......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeSendToSyslog (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ metric statistics ==============

ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistNetElementMetrics (ms):..................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Incoming message rate to Metric Server:....................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeFindCurrentMetric (ms):.........................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimefindCurrentMetricsForNetObject (ms):............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

sendMetricEvents:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistNetElementMetric (ms):...................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeAddMetricWithoutPropagation (ms):...............................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Rate of message drop at the metric server:.................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeAddMetricsInBulkWithoutPropagation (ms):........................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ issues statistics ==============

Issues Incoming Rate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

UpdateEventAndIssues (ms):.................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Issues Processing Rate:....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ label statistics ==============

Label drop rate:...........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimePersistBatch (ms):..............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Label processing rate:.....................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ElapsedTimeBatchCommit (ms):...............................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Label request rate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

Batch Commit Size :........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ csmp statistics ==============

csmpConNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNonNotificationRate:...................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNonQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpNotificationRate:......................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpDropRate:..............................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpProcessingRate:........................................................[ val: 0/s over 1 min ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

csmpConQueueSize:..........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

==============================================

============ database connection pool statistics ==============

dbConFlushCount:...........................................................[ val: 0 ] [ avg: 0.0 ] [ counter: 0 ] [ lastUpdate: never ]

ActiveCount:...............................................................[ val: 13 ]

InUseCount:................................................................[ val: 7 ]

AvailableCount:............................................................[ val: 243 ]

CreatedCount:..............................................................[ val: 13 ]

DestroyedCount:............................................................[ val: 0 ]

keytool (/opt/cgms/jre/bin/keytool) :

Il est important de savoir que l'installation FND est fournie avec Java. Vous devez utiliser l'utilitaire keytool afin de créer et gérer le magasin cgms_keystore qui doit être configuré de manière appropriée sur le FND et le serveur de provisionnement de tunnel (TPS).

Dans certains environnements, Java est déjà installé sur le serveur et la commande keytool sera disponible pour tout utilisateur à l'aide de la variable d'environnement $PATH. Si vous utilisez la commande keytool et que vous trouvez cette erreur, il existe une autre solution pour vous :

[root@fnd]# keytool

-bash: keytool: command not found

Vous pouvez accéder au répertoire /opt/cgms/jre/bin/ et appeler l'utilitaire keytool dans ce répertoire par exemple :

[root@fnd ~]# keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore

-bash: keytool: command not found

[root@fnd ~]# cd /opt/cgms/jre/bin/

[root@fnd bin]# ./keytool -v -list -keystore /opt/cgms/server/cgms/conf/cgms_keystore

Enter keystore password:

cgdm-client.sh (/opt/cgms-tools/bin/cgdm-client.sh) :

Note: Ce script et d'autres scripts du répertoire /opt/cgms-tools/ sont regroupés dans le paquet RPM cgms-tools.

FND utilise Netconf sur HTTPS afin d'accéder au routeur de zone de champ (FAR) et de communiquer avec lui. Netconf utilise des messages au format XML afin de fournir un service qui est non seulement fiable et fiable, mais qui peut également être facilement décomposé et envoyé à une base de données. Il existe un outil CLI appelé cgdm-client qui ouvrira une session CGDM (Connected Grid Device Manager) manuelle à un FAR de votre choix, exécutera une commande distante et enverra le code XML reçu en réponse de FAR à stdout dans BASH.

Si vous exécutez le script sans options, vous recevrez des instructions d'utilisation :

[root@fnd bin]# ./cgdm-client

ERROR: Please specify an IP address and a command

usage: cgdm-client <cgr ip address> <cgdm CLI command>

-c <arg> Conf and keystore directory path, default =

/opt/cgms/server/cgms/conf

-v Verbose mode

Par exemple, supposons que vous vouliez vérifier que l'heure est entièrement synchronisée sur l'un de vos routeurs où l'adresse IP de gestion (la valeur 'IP' dans votre fichier .csv) est 192.0.2.1. À partir d'une session de terminal sur votre serveur d'applications FND, vous pouvez interroger l'heure sur un routeur CGR à l'aide de la commande show clock :

[root@fnd bin]# ./cgdm-client 192.0.2.1 show clock

<?xml version="1.0" encoding="ISO-8859-1"?>

<nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://www.cisco.com/nxos:1.0" message-id="1">

<nf:data>15:44:58.092 CST Mon Mar 13 2017

</nf:data>

</nf:rpc-reply>

Vous pouvez éventuellement spécifier un résultat détaillé à l'aide de l'indicateur 'v' dans votre commande. Notez que le résultat détaillé provient des processus et de la syntaxe des logiciels Java et Cisco. Vous ne verrez aucune information supplémentaire sur le réseau ou le périphérique dans ce résultat :

[root@fnd bin]# ./cgdm-client -v 192.0.2.1 show clock

< output omitted >

csmp-request.sh (/opt/cgms-tools/bin/csmp-request.sh) :

Outre l'outil FAR cgdm-client, il existe un outil pour les terminaux appelé csmp-request. De la même manière que le script cgdm-client, ce script vous permettra d'interroger des informations de vos CGE à l'aide de CSMP. Il vous suffit de spécifier l'adresse IPv6 du point de terminaison de maillage et le TLV (Type Length Value) que vous interrogez sur le périphérique. La liste complète des codes TLV est hors de portée dans cet article, mais quelques exemples bien connus seront présentés ci-dessous. La syntaxe du script est la suivante :

./csmp-request -r [] Valeur TLV

1. Interroger la version du microprogramme CGE sur un compteur avec IP 2001:db8::1/32

[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 75

2. Interroger le temps de fonctionnement sur un compteur avec IP 2001:db8::1/32

[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 22

outil de signature (/opt/cgms-tools/bin/signature-tool) :

L'outil Signature est un utilitaire Java qui vous permet de chiffrer des mots de passe de test en clair, de déchiffrer des mots de passe ou des chaînes chiffrés et d'imprimer les certificats SSM_CSMP en texte clair. Cet outil doit être utilisé pour générer des chaînes de mot de passe chiffrées pour vos fichiers .csv afin qu'ils ne contiennent pas de mots de passe administrateur en texte clair.

Pour afficher la syntaxe des commandes, exécutez le script sans options :

[root@fnd bin]# ./signature-tool

usage:

signature-tool print

signature-tool export <binary|base64> <filename>

signature-tool decrypt <keystore> <filename>

signature-tool encrypt <keystore> <filename>

Pour imprimer le certificat SSM_CSMP, utilisez :

[root@fnd bin]# ./signature-tool print

Pour chiffrer un mot de passe admin en texte clair :

1. Accédez au répertoire /opt/cgms-tools/bin :

[root@fnd ~]# cd /opt/cgms-tools/bin

[root@fnd bin]# pwd

/opt/cgms-tools/bin

2. Créez un nouveau fichier texte qui ne contient que la chaîne/le mot de passe appropriée en texte clair :

1. [root@fnd bin]# echo AdminPassword > clear-text-password.txt

[root@fnd bin]# cat clear-text-password.txt

AdminPassword

2. Exécutez le script de l'outil de signature à l'aide de l'option 'encrypt' et spécifiez le chemin exact du fichier cgms_keystore et le nom du fichier que vous venez de créer qui contient le mot de passe en texte clair. Lorsque vous y êtes invité, utilisez 'cgms' comme seul certificat dans le fichier cgms_keystore avec l'alias 'cgms' est utilisé par l'application FND pour s'authentifier auprès de votre autorité de certification :

[root@fnd bin]# ./signature-tool encrypt /opt/cgms/server/cgms/conf/cgms_keystore clear-text-password.txt

Enter alias: cgms

Enter password:

pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg==

Pour déchiffrer une chaîne chiffrée :

1. Créez un nouveau fichier .txt dans le répertoire /opt/cgms-tools/bin/ à l'aide de la chaîne chiffrée :

[root@fnd bin]# echo pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg== > encrypted-password.txt

2.Exécutez l'outil de signature avec l'utilisation de l'option decrypt, et spécifiez une fois de plus le chemin exact du fichier keystore ainsi que le nom du fichier .txt qui contient le mot de passe chiffré.

[root@fnd bin]# ./signature-tool decrypt /opt/cgms/server/cgms/conf/cgms_keystore encrypted-password.txt

Enter alias: cgms

Enter password:

AdminPassword

Outils de base de données

Tout comme l'ensemble robuste d'outils/utilitaires de ligne de commande, le FND contient une belle suite d'outils basés sur une interface utilisateur graphique qui peut vous aider à analyser et diagnostiquer les problèmes avec la base de données. Pour accéder aux outils de base de données, connectez-vous au tableau de bord principal de votre déploiement FND, puis collez /pages/diag/db.seam après la partie .com de votre URL.

Cette zone comporte trois onglets : Requête DB, Info DB et Visionneuse de journaux. L'onglet Requête DB vous permet d'exécuter des requêtes personnalisées et fournit une liste de toutes les tables si vous cliquez sur Afficher toutes les tables à droite du bouton Requête. Par exemple, pour afficher l'état des couches 1 et 2 pour toutes les interfaces de périphérique, tapez SELECT * FROM NET_INTERFACES dans la zone de requête SQL, puis cliquez sur le bouton Requête. Vous recevrez une liste de toutes les interfaces HER et FAR, leurs adresses MAC, l'état de la couche administrative 1 et l'état de la liaison de la couche 2 pour chaque interface.

Pour vérifier les paramètres de connexion à la base de données, cliquez sur l'onglet Info DB de la page db.seam. Ici, vous aurez un accès en lecture seule à de nombreuses variables de base de données telles que l'URL de connexion, le nom d'utilisateur de la base de données, la version Oracle, le numéro de port, le SID et la taille de chaque table. Cette page contient également des informations sur la zone de récupération rapide (FRA) telles que l'espace utilisé par chaque type de fichier stocké sur FRA et la quantité d'espace pouvant être récupérée.