El conjunto de documentos para este producto aspira al uso de un lenguaje no discriminatorio. A los fines de esta documentación, "no discriminatorio" se refiere al lenguaje que no implica discriminación por motivos de edad, discapacidad, género, identidad de raza, identidad étnica, orientación sexual, nivel socioeconómico e interseccionalidad. Puede haber excepciones en la documentación debido al lenguaje que se encuentra ya en las interfaces de usuario del software del producto, el lenguaje utilizado en función de la documentación de la RFP o el lenguaje utilizado por un producto de terceros al que se hace referencia. Obtenga más información sobre cómo Cisco utiliza el lenguaje inclusivo.
Cisco ha traducido este documento combinando la traducción automática y los recursos humanos a fin de ofrecer a nuestros usuarios en todo el mundo contenido en su propio idioma. Tenga en cuenta que incluso la mejor traducción automática podría no ser tan precisa como la proporcionada por un traductor profesional. Cisco Systems, Inc. no asume ninguna responsabilidad por la precisión de estas traducciones y recomienda remitirse siempre al documento original escrito en inglés (insertar vínculo URL).
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.
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.
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.
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:
[root@fnd ~]# cd /opt/cgms-tools/bin [root@fnd bin]# pwd /opt/cgms-tools/bin
Cree un nuevo archivo de texto que contenga sólo la cadena/contraseña pertinente en texto sin formato:
[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==
Para descifrar una 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
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.