Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Herramientas de línea de comandos

Herramientas de base de datos

Introducción

Este documento describe cómo utilizar las herramientas de resolución de problemas disponibles como parte de la implementación de Field Network Director (FND).La solución FND tiene un amplio alcance y abarca numerosas tecnologías y especializaciones diversas. Debido a esto, hay numerosos scripts y herramientas de línea de comandos que pueden ayudar a verificar el comportamiento en una situación determinada o diagnosticar un problema complejo.

Colaborado por Ryan Bowman, ingeniero del TAC de Cisco.

Prerequisites

Requirements

Cisco recomienda disponer de un entorno de laboratorio o de producción completamente operativo con el router de cabecera (HER) registrado, el router de área de campo y el terminal de Connected Grid (CGE). Para verificar las estadísticas del protocolo de administración simple (CSMP) de CoAP con getStats.sh, debe tener al menos un CGE que genere tráfico de CSMP.

Para utilizar los archivos ubicados en el directorio /opt/cgms-tools/, el paquete RPM cgms-tools debe estar instalado en su servidor de aplicaciones.

Componentes Utilizados

La información de este documento se recopiló con el uso de la versión 3.0.1-36 de FND con todos los servidores Linux instalados en máquinas virtuales que ejecutan 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.

Herramientas de línea de comandos

Esta sección cubre las utilidades CLI disponibles como parte de los paquetes cgms y cgms-tools. La trayectoria de instalación predeterminada para el cgms RPM es /opt/cgms/y la trayectoria de instalación predeterminada para cgms-tools es /opt/cgms-tools/.

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

Después de la primera instalación del FND, se debe ejecutar este script para configurar las variables de aplicación necesarias. Una vez iniciada la producción, todavía puede utilizar esta utilidad para cambiar los parámetros de configuración críticos. Antes de ejecutar esta secuencia de comandos, debe detener el servicio cgms, navegar al directorio /opt/cgms/bin/ y ejecutar el ./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):

Esta secuencia de comandos está diseñada para ejecutarse mientras la aplicación está en funcionamiento. Es extremadamente útil cuando analiza el rendimiento con clústeres de carga equilibrada y pares de base de datos activo/en espera. Cada métrica de rendimiento está fuera del alcance de este artículo, pero aquí hay un ejemplo de salida cuando ejecutamos el script.

Cuando resuelva problemas de implementaciones FND en un clúster, ejecute este script en cada servidor para verificar que el balanceo de carga funciona correctamente. Si uno de los servidores de la aplicación tiene una tasa de procesamiento de CSMP mucho mayor que los demás, es probable que el balanceo de carga no esté configurado incorrectamente. Además, cuando analiza este resultado, si ve que sus tamaños de cola aumentan, sabe que hay un proceso de cuello de botella en algún lugar.

[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 importante saber que la instalación de FND viene con Java. Debe utilizar la utilidad keytool para crear y administrar el cgms_keystore que debe configurarse adecuadamente tanto en el FND como en el Servidor de aprovisionamiento de túnel (TPS).

En algunos entornos, el servidor ya tiene instalado Java y el comando keytool estará disponible para cualquier usuario mediante el uso de la variable de entorno $PATH. Si utiliza el comando keytool y encuentra este error, entonces hay otra solución para usted:

[root@fnd]# keytool

-bash: keytool: command not found

Puede navegar al /opt/cgms/jre/bin/ directorio e invocar la utilidad keytool en este directorio por ejemplo:

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

Nota: Este script y otros scripts en el directorio /opt/cgms-tools/ se incluyen en el paquete cgms-tools RPM.

FND utiliza Netconf a través de HTTPS para acceder y comunicarse con el router de área de campo (FAR). Netconf utiliza mensajes con formato XML para proporcionar un servicio que no sólo es fiable y fiable, sino que también se puede dividir fácilmente y enviar a una base de datos. Hay una herramienta CLI llamada cgdm-client que abrirá una sesión manual de Connected Grid Device Manager (CGDM) a una FAR de su elección, ejecutará un comando remoto y enviará el XML recibido en respuesta de FAR a stdout en BASH.

Si ejecuta la secuencia de comandos sin opciones, se le presentarán instrucciones de uso:

[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

Por ejemplo, digamos que desea verificar que el tiempo está completamente sincronizado en uno de sus routers donde la IP de administración (el valor 'IP' en su archivo .csv) es 192.0.2.1. Desde una sesión de terminal en su servidor de aplicaciones FND, puede consultar la hora en un CGR con el comando 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>

Opcionalmente, puede especificar un resultado detallado con el uso del indicador "v" en su comando. Tenga en cuenta que el resultado detallado proviene de los procesos y sintaxis del software de Java y Cisco. No verá ninguna información adicional de red o dispositivo en este resultado:

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

< output omitted >

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

Además de la herramienta cgdm-client FAR, hay una herramienta para terminales llamada csmp-request. De manera similar a la secuencia de comandos cgdm-client, esta secuencia de comandos le permitirá consultar información de sus CGE mediante CSMP. Solo tiene que especificar la dirección IPv6 del terminal de malla y el TLV (valor de longitud de tipo) que está consultando en el dispositivo. La lista completa de códigos TLV está fuera de alcance en este artículo, pero a continuación se mostrarán algunos ejemplos bien conocidos. La sintaxis del script es:

./csmp-request -r [] TLV-Value

1. Consultar la versión del firmware de CGE en un contador con IP 2001:db8::1/32

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

2. Tiempo de actividad de la consulta en un contador con IP 2001:db8::1/32

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

herramienta de firma (/opt/cgms-tools/bin/Signature-tool):

La herramienta Signature es una utilidad Java que le permitirá cifrar contraseñas de prueba transparente, descifrar contraseñas o cadenas cifradas e imprimir los certificados SSM_CSMP en texto sin cifrar. Esta herramienta se debe utilizar para generar cadenas de contraseña cifradas para los archivos .csv de modo que no contengan contraseñas de administrador en texto sin cifrar.

Para ver la sintaxis de los comandos, ejecute el script sin opciones:

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

Para imprimir el certificado SSM_CSMP, utilice:

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

Para cifrar una contraseña de administrador de texto sin cifrar:

1. Navegue hasta el directorio /opt/cgms-tools/bin:

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

[root@fnd bin]# pwd

/opt/cgms-tools/bin

2. Cree un nuevo archivo de texto que contenga sólo la cadena/contraseña pertinente en texto sin formato:

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

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

AdminPassword

2. Ejecute el script Signature Tool con la opción 'cifrar' y especifique la ruta exacta del archivo cgms_keystore y el nombre del archivo que acaba de crear que contiene la contraseña de texto sin cifrar. Cuando se le solicite el alias, utilice 'cgms' como único que la aplicación FND utiliza el certificado del archivo cgms_keystore con el alias 'cgms' para autenticarse con su CA:

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

Para descifrar una cadena cifrada:

1. Cree un nuevo archivo .txt en el /opt/cgms-tools/bin/ directorio usando la cadena cifrada:

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

2.Ejecute la herramienta Signature con la opción decrypt, y una vez más especifique la ruta exacta del archivo keystore así como el nombre del archivo .txt que tiene la contraseña cifrada almacenada en él.

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

Enter alias: cgms

Enter password:

AdminPassword

Herramientas de base de datos

Al igual que el sólido conjunto de herramientas/utilidades de línea de comandos, el FND contiene un buen conjunto de herramientas basadas en GUI que pueden ayudarle a analizar y diagnosticar problemas con la base de datos. Para acceder a las herramientas de base de datos, inicie sesión en el panel principal de la implementación de FND y, a continuación, pegue /pages/diag/db.seam después de la parte .com de su URL.

Esta área tiene tres fichas: Consulta de base de datos, Información de base de datos y Visor de registros. La ficha Consulta de base de datos le permitirá ejecutar consultas personalizadas y le proporcionará una lista de todas las tablas si hace clic en Mostrar todas las tablas a la derecha del botón Consulta. Por ejemplo, para ver el estado de la capa 1 y 2 para todas las interfaces de dispositivo, escriba SELECT * FROM NET_INTERFACES en el cuadro de consulta SQL y, a continuación, haga clic en el botón Query. Se le proporcionará una lista de todas las interfaces HER y FAR, sus direcciones MAC, estado administrativo de capa 1 y estado de link de capa 2 para cada interfaz.

Si desea verificar la configuración de la conexión a la base de datos, haga clic en la ficha Información de la base de datos de la página db.seam. Aquí, tendrá acceso de sólo lectura a numerosas variables de base de datos como URL de conexión, nombre de usuario de base de datos, versión de Oracle, número de puerto, SID y tamaño de cada tabla. También se muestra en esta página información del Área de recuperación de Flash (FRA), como el espacio utilizado por cada tipo de archivo almacenado en FRA y la cantidad de espacio que se puede reclamar.