Inhalt

Einführung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Befehlszeilentools

Datenbanktools

Einführung

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.

Voraussetzungen

Anforderungen

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.

Verwendete Komponenten

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.

Befehlszeilentools

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:

1. Navigieren Sie zum Verzeichnis /opt/cgms-tools/bin:

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

[root@fnd bin]# pwd

/opt/cgms-tools/bin

2. Erstellen Sie eine neue Textdatei, die nur die relevante Zeichenfolge bzw. das entsprechende Kennwort im Klartext enthält:

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

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

AdminPassword

2. Führen Sie das Signature-Tool-Skript mithilfe der Option 'verschlüsseln' aus, und geben Sie den genauen Pfad der Datei cgms_keystore und den Namen der Datei an, die Sie gerade erstellt haben und in der das Klartext-Kennwort enthalten ist. Wenn Sie zur Eingabe des Alias aufgefordert werden, verwenden Sie 'cgms' als nur das Zertifikat in der Datei cgms_keystore mit dem Alias 'cgms', das von der FND-Anwendung für die Authentifizierung mit Ihrer CA verwendet wird:

[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:

1. Erstellen Sie eine neue TXT-Datei im /opt/cgms-tools/bin/Verzeichnis mit der verschlüsselten 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

Datenbanktools

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.