In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
In diesem Dokument wird die Verwendung von Tools zur Fehlerbehebung beschrieben, die im Rahmen der Bereitstellung von Field Network Director (FND) verfügbar sind.Die FND-Lösung ist umfassend und umfasst zahlreiche Technologien und Spezialisierungen. Aus diesem Grund gibt es zahlreiche Skripte und Befehlszeilentools, die helfen können, das Verhalten in einer bestimmten Situation zu überprüfen oder ein komplexes Problem zu diagnostizieren.
Unterstützt von Ryan Bowman, Cisco TAC Engineer.
Cisco empfiehlt, eine vollständig betriebene Produktions- oder Laborumgebung mit registriertem Head-End-Router (HER), Field Area Router und Connected Grid Endpoint (CGE) einzurichten. Um CoAP Simple Management Protocol (CSMP)-Statistiken mit getStats.sh zu überprüfen, muss mindestens ein CGE vorhanden sein, der CSMP-Datenverkehr generiert.
Um die Dateien im Verzeichnis "/opt/cgms-tools/" zu nutzen, muss das RPM-Paket cgms-tools auf dem Anwendungsserver installiert sein.
Die Informationen in diesem Dokument wurden unter Verwendung der FND-Version 3.0.1-36 gesammelt, wobei alle Linux-Server auf virtuellen Systemen mit RHEL 6.5 installiert waren.
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Dieser Abschnitt behandelt CLI-Dienstprogramme, die als Teil der Pakete cgms und cgms-tools verfügbar sind. Der Standardinstallationspfad für das CGMS RPM ist /opt/cgms/und der Standardinstallationspfad für cgms-tools ist /opt/cgms-tools/.
setupCgms.sh (/opt/cgms/bin/setupCgms.sh):
Nach der Erstinstallation des FND sollte dieses Skript in der Reihenfolge ausgeführt werden, in der die erforderlichen Anwendungsvariablen konfiguriert werden. Nachdem die Produktion begonnen hat, können Sie mit diesem Dienstprogramm wichtige Konfigurationsparameter ändern. Bevor Sie dieses Skript ausführen, müssen Sie den CGMS-Dienst beenden, zum /opt/cgms/bin/directory navigieren und den Befehl ./setupCgms ausführen.
[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):
Dieses Skript soll ausgeführt werden, während die Anwendung ausgeführt wird. Sie ist äußerst hilfreich, wenn Sie die Leistung mithilfe von Cluster mit Lastausgleich und Aktiv/Standby-DB-Paaren analysieren. Jede Leistungsmetrik geht über den Rahmen dieses Artikels hinaus, aber hier ist eine Beispielausgabe beim Ausführen des Skripts.
Führen Sie bei der Fehlerbehebung für FND-Bereitstellungen in einem Cluster dieses Skript auf jedem Server aus, um sicherzustellen, dass der Lastenausgleich ordnungsgemäß funktioniert. Wenn einer der Anwendungsserver eine wesentlich höhere CSMP-Verarbeitungsrate als die anderen hat, ist der Lastenausgleich wahrscheinlich nicht korrekt konfiguriert. Wenn Sie diese Ausgabe analysieren und die Größe Ihrer Warteschlangen erhöhen, wissen Sie, dass irgendwo ein Engpass auftritt.
[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):
Es ist wichtig zu wissen, dass die FND-Installation mit Java geliefert wird. Sie müssen das keytool-Dienstprogramm verwenden, um den cgms_keystore zu erstellen und zu verwalten, der auf dem FND und dem Tunnel Provisioning Server (TPS) entsprechend konfiguriert werden muss.
In einigen Umgebungen ist auf dem Server bereits Java installiert, und der Befehl keytool wird für jeden Benutzer über die $PATH-Umgebungsvariable verfügbar sein. Wenn Sie den Befehl keytool verwenden und diesen Fehler finden, gibt es eine andere Lösung für Sie:
[root@fnd]# keytool -bash: keytool: command not found
Sie können zum /opt/cgms/jre/bin/directory navigieren und das keytool-Dienstprogramm in diesem Verzeichnis aufrufen, z. B.:
[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):
Hinweis: Dieses Skript und andere Skripts im Verzeichnis /opt/cgms-tools/ sind im RPM-Paket cgms-tools gebündelt.
FND verwendet Netconf über HTTPS, um auf den Field Area Router (FAR) zuzugreifen und mit ihm zu kommunizieren. Netconf verwendet XML-formatierte Nachrichten, um einen Service bereitzustellen, der nicht nur zuverlässig und zuverlässig ist, sondern auch einfach zerlegt und an eine Datenbank gesendet werden kann. Es gibt ein CLI-Tool namens cgdm-client, das eine manuelle CGDM-Sitzung (Connected Grid Device Manager) für eine FAR Ihrer Wahl öffnet, einen Remote-Befehl ausführt und den als Antwort von FAR erhaltenen XML an STDout in BASH sendet.
Wenn Sie das Skript ohne Optionen ausführen, werden Ihnen Nutzungsrichtlinien angezeigt:
[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
Angenommen, Sie möchten überprüfen, ob die Uhrzeit auf einem Ihrer Router vollständig synchronisiert ist, wobei die Management-IP (der IP-Wert in Ihrer CSV-Datei) 192.0.2.1 ist. In einer Terminalsitzung auf dem FND-Anwendungsserver können Sie die Uhrzeit auf einem CGR mithilfe des Befehls show clock abfragen:
[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>
Optional können Sie eine ausführliche Ausgabe mit dem 'v'-Flag in Ihrem Befehl angeben. Beachten Sie, dass die ausführliche Ausgabe von den Java- und Cisco-Softwareprozessen und der -Syntax stammt. In dieser Ausgabe werden keine weiteren Netzwerk- oder Geräteinformationen angezeigt:
[root@fnd bin]# ./cgdm-client -v 192.0.2.1 show clock < output omitted >
csmp-request.sh (/opt/cgms-tools/bin/csmp-request.sh):
Neben dem FAR-Tool cgdm-client gibt es ein Tool für Endpunkte, das als csmp-request bezeichnet wird. Ähnlich wie das cgdm-client-Skript ermöglicht es dieses Skript Ihnen, mithilfe von CSMP Informationen von Ihren CGEs abzufragen. Sie müssen lediglich die IPv6-Adresse des Mesh-Endpunkts und die TLV (Type Length Value) angeben, die Sie auf dem Gerät abfragen. Die vollständige Liste der TLV-Codes ist in diesem Artikel nicht enthalten. Nachfolgend werden jedoch einige bekannte Beispiele aufgeführt. Die Syntax für das Skript lautet:
./csmp-request -r [] TLV-Value
1. Abfrage der CGE-Firmware-Version auf einem Meter mit IP 2001:db8::1/32
[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 75
2. Abfrageverfügbarkeit auf einem Messgerät mit IP 2001:db8::1/32
[root@fnd bin]# ./csmp-request -r [2001:db8:0:0:0:0:0:1] 22
Signaturtool (/opt/cgms-tools/bin/signaturtool):
Das Signature-Tool ist ein Java-Dienstprogramm, mit dem Sie unverschlüsselte Kennwörter verschlüsseln, verschlüsselte Kennwörter oder Zeichenfolgen entschlüsseln und die SSM_CSMP-Zertifikate in Klartext drucken können. Dieses Tool sollte verwendet werden, um verschlüsselte Passwortzeichenfolgen für Ihre CSV-Dateien zu generieren, damit diese keine Administratorkennwörter in Klartext enthalten.
Um die Befehlssyntax anzuzeigen, führen Sie das Skript ohne Optionen aus:
[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>
So drucken Sie das SSM_CSMP-Zertifikat:
[root@fnd bin]# ./signature-tool print
So verschlüsseln Sie ein Klartext-Administratorkennwort:
[root@fnd ~]# cd /opt/cgms-tools/bin [root@fnd bin]# pwd /opt/cgms-tools/bin
Erstellen Sie eine neue Textdatei, die nur die relevante Zeichenfolge bzw. das entsprechende Kennwort im Klartext enthält:
[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==
So entschlüsseln Sie eine verschlüsselte Zeichenfolge:
[root@fnd bin]# echo pXHcF+YxyoJarz4YAqvFVMrLT2I//caHLddiJfrb7k65RmceIJUNlDd2dUPhGyGZTeEfz8beh8tWSGZ4lc66rhAQ9mYNaw2XSPaL8psoK+U0wzHgY068tnc7q17t05CZ5HQh8tWSGZ4lc66rhAQ9mOivj1B3XRKFmkpSXo4ZubeKRJ4NNaGAKFV8cjBJQDWsh7NAXL3x5D62/7w4Mhmftf2XiGlqeWlc66rhAQF+YxyoJarz4YAqvFVMrLT2I//caHLIDYoKoeTVB2SLQXtSZR+dwxYjQsE0hCmBpHv0lDD/l4gg== > encrypted-password.txt
2.Führen Sie das Signature-Tool mithilfe der Option Entschlüsseln aus, und geben Sie erneut den genauen Pfad der Keystore-Datei sowie den Namen der TXT-Datei an, in der das verschlüsselte Kennwort gespeichert ist.
[root@fnd bin]# ./signature-tool decrypt /opt/cgms/server/cgms/conf/cgms_keystore encrypted-password.txt Enter alias: cgms Enter password: AdminPassword
Genau wie die robusten Befehlszeilentools/-programme enthält das FND eine Reihe von GUI-basierten Tools, die Ihnen bei der Analyse und Diagnose von Datenbankproblemen helfen können. Um auf die DB-Tools zuzugreifen, melden Sie sich beim Haupt-Dashboard Ihrer FND-Bereitstellung an, und fügen Sie /pages/diag/db.seam nach der .com-Seite Ihrer URL ein.
Dieser Bereich hat drei Registerkarten: DB-Abfrage, DB-Info und Protokollanzeige. Auf der Registerkarte DB-Abfrage können Sie benutzerdefinierte Abfragen ausführen. Wenn Sie auf Alle Tabellen anzeigen rechts neben der Schaltfläche Abfrage klicken, wird eine Liste aller Tabellen angezeigt. Um beispielsweise den Layer-1- und Layer-2-Status für alle Geräteschnittstellen anzuzeigen, geben Sie SELECT * FROM NET_INTERFACES in das SQL-Abfrage-Feld ein, und klicken Sie dann auf die Schaltfläche Abfrage. Sie erhalten eine Liste aller HER- und FAR-Schnittstellen, ihrer MAC-Adressen, des administrativen Layer-1-Status und des Layer-2-Verbindungsstatus für jede Schnittstelle.
Wenn Sie die Datenbankverbindungseinstellungen überprüfen möchten, klicken Sie auf die Registerkarte DB-Info der Seite db.seam. Hier haben Sie schreibgeschützten Zugriff auf zahlreiche Datenbankvariablen wie Verbindungs-URL, Datenbankbenutzername, Oracle-Version, Portnummer, SID und Größe jeder Tabelle. Wird auch auf dieser Seite Flash Recovery Area (FRA)-Informationen, wie Speicherplatz verwendet von jedem Dateityp auf FRA gespeichert und wie viel Speicherplatz ist wiedererstattbar.