Inhoud

Inleiding

Voorwaarden

Vereisten

Gebruikte componenten

Opdrachtlijntools

Databaseverwerking

Inleiding

Dit document beschrijft hoe u probleemoplossing kunt gebruiken die beschikbaar is als onderdeel van de FND-inzet (Field Network Director). De FND-oplossing is breed in bereik en omvat talrijke verschillende technologieën en specialisaties. Daardoor zijn er talloze scripts en commando line tools die kunnen helpen gedrag in een bepaalde situatie te verifiëren of die een complex probleem kunnen diagnosticeren.

Bijgedragen door Ryan Bowman, Cisco TAC Engineer.

Voorwaarden

Vereisten

Cisco raadt u aan een volledig operationele productie- of labomgeving te hebben met geregistreerde head-end router (HER), Field Area Router en Connected Grid-endpoint (CGE). Om CoAP Simple Management Protocol (CSMP)-statistieken met getStats.sh te controleren moet u minimaal één CGE hebben die CSMP-verkeer genereert.

Om de bestanden in de /opt/cgms-tools/folder te kunnen gebruiken, moet het cgms-tools RPM-pakket op uw toepassingsserver geïnstalleerd zijn.

Gebruikte componenten

De informatie in dit document is allemaal verzameld met het gebruik van FND versie 3.0.1-36, waarbij alle Linux-servers zijn geïnstalleerd op virtuele machines met RHEL 6.5.

De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.

Opdrachtlijntools

Deze sectie bestrijkt CLI-hulpprogramma's die beschikbaar zijn als onderdeel van zowel de pakketten cgms als cgms-tools. Het standaard installatiepad voor cgms RPM is /opt/cgms/en het standaard installatiepad voor cgms-tools is /opt/cgms-tools/.

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

Na eerste installatie van de FND dient dit script uitgevoerd te worden om de benodigde applicatie variabelen te configureren. Nadat de productie is begonnen, kunt u deze voorziening nog gebruiken om kritieke configuratieparameters te veranderen. Voordat u dit script uitvoert, moet u eerst de cgms service stoppen, naar de opt/cgms/bin/ folder navigeren en de ./SetupCgms opdracht uitvoeren.

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

Dit script dient te worden uitgevoerd zolang de applicatie loopt. Het is zeer behulpzaam wanneer u prestaties met load gebalanceerde clusters en active/stand-by DB paren analyseert. Elke prestatiemetrisch is buiten het bereik van dit artikel maar hier is een steekproefuitvoer wanneer we het script uitvoeren.

Wanneer u FND-implementaties in een cluster probleemoplossing uitvoert, voert u dit script op elke server uit om te controleren of de taakverdeling correct werkt. Als een van de app servers een veel hogere CSMP-verwerkingssnelheid heeft dan de andere, is de taakverdeling waarschijnlijk niet onjuist ingesteld. Bovendien, wanneer u deze output analyseert, als u ziet dat uw rijmaten toenemen, dan weet u dat er ergens een knelpuntproces is.

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

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

Het is belangrijk om te weten dat de FND-installatie bij Java geleverd wordt. U moet het keytool gebruiken om de cgms_keystore te maken en te beheren, die correct moet worden geconfigureerd op zowel het FND als de Tunnel Provisioning Server (TPS).

In sommige omgevingen is Java al geïnstalleerd en de opdracht sleutelgereedschap zal voor elke gebruiker beschikbaar zijn door gebruik van de $PATH omgevingsvariabele. Als u de opdracht sleutelgereedschap gebruikt en deze fout zoekt, is er een andere oplossing voor u:

[root@fnd]# keytool

-bash: keytool: command not found

U kunt naar de /opt/cgms/jre/bin/folder navigeren en bijvoorbeeld het keytool-hulpprogramma in deze map aanhalen:

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

Opmerking: Dit script en andere scripts in de /opt/cgms-tools/folder zijn gebundeld in het cgms-tools RPM-pakket.

FND gebruikt NetConf over HTTPS om toegang te hebben tot en te communiceren met Veldgebied Router (FAR). Netconf gebruikt de XML - geformatteerde berichten om een dienst te leveren die niet alleen betrouwbaar en betrouwbaar is, maar ook gemakkelijk kan worden uitgesplitst en naar een database kan worden verstuurd. Er is een CLI-tool met de naam cgdm-client die een handmatige Connected Grid Devices Manager (CGDM)-sessie opent naar een FAR van uw keuze, een afstandsopdracht uitvoert en XML-bestanden verzenden die in antwoord op FAR zijn ontvangen naar uitstappen in BASH.

Als u het script zonder opties uitvoert, ontvangt u een gebruiksaanwijzing:

[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

Stel dat u wilt controleren of de tijd volledig gesynchroniseerd is op een van uw routers waar de IP-beheerwaarde (de 'IP'-waarde in uw .csv-bestand) 192.0.2.1 is. Vanaf een eindsessie op uw FND-toepassingsserver kunt u de tijd vragen op een CGR met de opdracht showklok:

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

Optioneel, kunt u breedteuitvoer specificeren met het gebruik van de 'v' vlag in uw opdracht. Merk op dat de breedteuitvoer afkomstig is van de Java- en Cisco-softwareprocessen en -syntaxis. U ziet geen extra netwerk- of apparaatinformatie in deze uitvoer:

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

< output omitted >

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

Naast het cgdm-client FAR-gereedschap, is er een gereedschap voor endpoints die csmp-request zijn genoemd. Op dezelfde manier als het cgdm-client-client script, zal dit script u in staat stellen om informatie van uw CGEs te vragen met CSMP. U hoeft alleen het IPv6-adres van het mesh-eindpunt en het TLV (Type Length Value) te specificeren dat u op het apparaat bestelt. De volledige lijst van TLV - codes is in dit artikel buiten toepassing, maar hieronder worden een paar bekende voorbeelden getoond. Syntax voor het script:

./csmp-verzoek -r [] TLV-waarde

1. Query CGE firmware versie op een meter met IP 2001:db8::1/32

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

2. Query uptime op een meter met IP 2001:db8::1/32

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

handgereedschap (/opt/cgms-tools/bin/signatuur):

Het Signature Tool is een Java-hulpprogramma waarmee u wachtwoorden kunt versleutelen, versleutelde wachtwoorden of koorden kunt decrypteren en de SSM_CSMP-certificaten in duidelijke tekst kunt afdrukken. Dit gereedschap moet worden gebruikt om gecodeerde wachtwoorden voor uw .csv-bestanden te genereren, zodat deze geen beheerderwachtwoorden in duidelijk-tekst bevatten.

Als u de opdrachtsyntaxis wilt weergeven, voert u het script zonder opties uit:

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

U kunt het gebruik van het SSM_CSMP-certificaat als volgt afdrukken:

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

U versleutelt een wachtwoord voor een zuiver tekstbeheerder:

1. Navigeer naar de /opt/cgms-tools/bin folder:

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

[root@fnd bin]# pwd

/opt/cgms-tools/bin

2. Maak een nieuw tekstbestand dat alleen de betreffende string/wachtwoord in duidelijke tekst bevat:

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

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

AdminPassword

2. Voer het script van het Signature Tool uit met behulp van de 'encrypt' optie, en specificeer het exacte pad van het cgms_keystore-bestand en de naam van het bestand dat u zojuist hebt gemaakt en dat het duidelijke wachtwoord van de tekst heeft. Wanneer het alias gevraagd wordt, gebruik "cgms" dan alleen het certificaat in het cgms_keystore bestand met de 'cgms' alias, wordt gebruikt door de FND-toepassing om de authenticiteit van uw CA te controleren:

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

Om een versleutelde string te decrypteren:

1. Maak een nieuw .txt-bestand in de /opt/cgms-tools/bin/folder met de gecodeerde string:

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

2.Voer het Signature Tool uit met behulp van de decrypt optie, en specificeer opnieuw het exacte pad van het sleutelopslagbestand evenals de naam van het .txt-bestand dat het gecodeerde wachtwoord heeft dat in het bestand is opgeslagen.

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

Enter alias: cgms

Enter password:

AdminPassword

Databaseverwerking

Net zoals de robuuste set van opdrachtregel tools/nutsbedrijven, bevat de FND een reeks op GUI gebaseerde tools die u kunnen helpen bij het analyseren en diagnosticeren van problemen met de database. Om toegang te krijgen tot de DB-tools, logt u in het hoofddashboard van uw FND-implementatie en plakt u vervolgens /pages/diag/db.seam na het .com-gedeelte van uw URL.

Dit gebied heeft drie tabbladen: DB Query, DB Info en Log Viewer. Het tabblad DB Query zal u aangepaste vragen laten uitvoeren en zal een lijst van alle tabellen geven als u op Alle tabellen rechts van de knop Query klikt. Bijvoorbeeld, om laag 1 en 2 status voor alle apparaat interfaces te bekijken, typt SELECT * VAN NET_INTERFACES in het SQL query box en klikt dan op de Query knop. U krijgt een lijst met alle HER- en FAR-interfaces, hun MAC-adressen, de beheerlaag 1-status en Layer 2-linkstatus voor elke interface.

Als u de instellingen voor de verbinding van de database wilt controleren, klikt u op in het tabblad DB Info van de pagina db.seam. Hier hebt u alleen-lezen toegang tot talloze databases zoals verbinding-URL, gebruikersnaam voor database, Oracle-versie, poortnummer, SID en grootte van elke tabel. Zie ook deze pagina-Flash recovery Area (FRA) informatie zoals de ruimte die wordt gebruikt door elk type bestand dat is opgeslagen op FRA, en hoeveel ruimte kan worden hersteld.