Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
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.
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.
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.
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 :
[root@fnd ~]# cd /opt/cgms-tools/bin [root@fnd bin]# pwd /opt/cgms-tools/bin
Créez un nouveau fichier texte qui ne contient que la chaîne/le mot de passe appropriée en texte clair :
[root@fnd bin]# echo AdminPassword > clear-text-password.txt [root@fnd bin]# cat clear-text-password.txt AdminPassword
[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 :
[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
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.