SNMP
Equipos de red que responden SNMP v1, v2c o v3 (no-breaks, PDU, switches, enrutadores, aire acondicionado de precisión y sensores de ambiente) leídos a través de su agente en el intervalo de sondeo de cada tag: la tarjeta Agente SNMP, el OID de un tag en números o por su nombre estándar, los tipos de dato en que se lee cada objeto, la lectura y la escritura, el recorrido que descubre los objetos de un agente y dos ejemplos completos.
El driver SNMP lee y escribe los equipos de un cuarto de equipos a través de su agente SNMP:
no-breaks, PDU, switches, enrutadores, aire acondicionado de precisión y sensores de temperatura o
humedad. Completa el driver Redfish, que lee los controladores de gestión de los
servidores: entre los dos cubren el cuarto de equipos. Cada tag lee un objeto del agente por su OID,
como upsBatteryStatus.0 o ifHCInOctets.2, y sus valores llegan adonde llegan los de cualquier otro
tag: a Logic, a los paneles de control, a las corridas de un banco de pruebas de Process.
La estación pregunta: cada tag se lee en su intervalo de sondeo, en SNMPv1, SNMPv2c o SNMPv3, y el Intervalo de sondeo (ms) de la tarjeta Dispositivo funciona como en cualquier driver, y cada tag puede reemplazarlo. Lo que el equipo envía por su cuenta, sus traps, no se recibe; vea Límites que conviene conocer.
Un dispositivo de este driver es un agente, al que se llega en su host por el puerto UDP 161. Los dispositivos cuelgan del driver y pueden archivarse en carpetas, Driver → Carpeta → Dispositivo → Tag, como en cualquier driver sin línea serie ni broker.
La página del driver
Para Configurar el conector, la página contiene la tarjeta Alcance del escaneo propia del driver, con el agente y los subárboles que recorre Descubrir (vea Descubrimiento). Debajo está la tabla Dispositivos de cualquier driver (vea La tabla de dispositivos), que crece con Agregar dispositivo, a la derecha de su título; vacía, dice "Todavía no hay dispositivos." La barra del driver lleva Descubrir, en gris hasta que la tarjeta Alcance del escaneo está completa.
Dispositivo
Conexión
| Campo | Significado | Predeterminado |
|---|---|---|
| Host o IP | El nombre de host o la dirección IP del agente. | vacío |
| Puerto | El puerto UDP en que responde el agente, de 1 a 65535. Una casilla vacía muestra 161 en gris y se le pregunta al agente en él. | 161 |
Un dispositivo nuevo no tiene host: dice "Host aún sin indicar", y no se envía nada hasta que lo
tiene. La Base URI que muestra el encabezado es la dirección de runtime, con la versión, la seguridad
SNMPv3 vigente, el tiempo de espera de respuesta y los reintentos:
snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1, o
snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1.
Nunca lleva la community, el usuario ni una contraseña.
La tarjeta Agente SNMP
Debajo de la tarjeta Conexión, la tarjeta Agente SNMP dice cómo se le pregunta al agente. Los campos que dibuja siguen la versión y, en SNMPv3, el nivel de seguridad.
| Campo | Se muestra | Significado | Predeterminado |
|---|---|---|---|
| Versión de SNMP | siempre | SNMPv1, SNMPv2c o SNMPv3, cada una con una línea debajo. SNMPv1: "SNMPv1 no tiene contadores de 64 bits, y un objeto que el agente no tiene hace rechazar la solicitud entera, que el driver repite entonces sin él." SNMPv2c: "SNMPv2c lee los contadores de 64 bits, y un objeto que el agente no tiene solo hace fallar ese tag. La mayoría de los equipos lo responde." SNMPv3: "SNMPv3 se identifica con un usuario, y firma y cifra sus mensajes según el nivel de seguridad." | SNMPv2c |
| Community | SNMPv1, SNMPv2c | La community a la que responde el agente, de 255 bytes como máximo, en una casilla que oculta lo que se escribe; vacía, muestra public como pista, nunca como valor. Debajo: "Un agente ignora una solicitud con una community que no acepta, así que una community equivocada parece un agente que no responde." |
vacío |
| Usuario SNMPv3 | SNMPv3 | El usuario que guarda el agente, de 32 caracteres como máximo. | vacío |
| Nivel de seguridad | SNMPv3 | Firmado y cifrado (authPriv): "Cada mensaje se firma con la contraseña de autenticación y se cifra con la contraseña de privacidad." Solo firmado (authNoPriv): "Cada mensaje se firma con la contraseña de autenticación y viaja sin cifrar." Sin firma ni cifrado (noAuthNoPriv): "Solo se envía el nombre de usuario: nada se firma y nada se cifra." | Firmado y cifrado (authPriv) |
| Protocolo de autenticación | SNMPv3, firmado | MD5, SHA-1, SHA-256, SHA-384 o SHA-512. | SHA-1 |
| Contraseña de autenticación | SNMPv3, firmado | La contraseña que firma los mensajes. | vacío |
| Protocolo de privacidad | SNMPv3, authPriv | DES, AES-128, AES-192 o AES-256. | AES-128 |
| Contraseña de privacidad | SNMPv3, authPriv | La contraseña que cifra los mensajes. | vacío |
| Tiempo de espera de respuesta (ms) | siempre | De 100 a 60000: "Cuánto espera una solicitud la respuesta del agente antes de enviarse de nuevo." | 2000 |
| Reintentos | siempre | De 0 a 5: "Cuántas veces se reenvía una solicitud sin respuesta antes de que el dispositivo cuente como desconectado." | 1 |
Debajo de las dos contraseñas: "Cada contraseña es la que el agente guarda para este usuario, de al menos 8 caracteres." El usuario, el nivel de seguridad y los dos protocolos son los que el agente tiene configurados para ese usuario, en la página de ajustes del propio equipo: la estación no puede preguntárselos al agente. MD5, SHA-1 y DES se ofrecen porque muchos equipos instalados no aceptan nada más reciente.
Una credencial aún sin indicar no es un error: el dispositivo se guarda, el driver no le envía nada al agente hasta que existe, y una línea serena debajo de la tarjeta dice lo que falta, la primera de estas:
| Falta | La tarjeta dice |
|---|---|
| La community (SNMPv1, SNMPv2c) | "Ingrese la community a la que responde el agente. Hasta entonces el dispositivo no envía nada." |
| El usuario (SNMPv3) | "Ingrese el usuario SNMPv3. Hasta entonces el dispositivo no envía nada." |
| La contraseña de autenticación (authNoPriv, authPriv) | "Ingrese la contraseña de autenticación. Hasta entonces el dispositivo no envía nada." |
| La contraseña de privacidad (authPriv) | "Ingrese la contraseña de privacidad. Hasta entonces el dispositivo no envía nada." |
Un dispositivo que tiene su host y aún le falta una credencial no se conecta, y su último error nombra la credencial que espera su agente. Un valor que la tarjeta no admite no se guarda, y la tarjeta dice por qué, en rojo:
| Usted ingresa | La tarjeta dice |
|---|---|
| Una contraseña de autenticación de menos de 8 caracteres | "La contraseña de autenticación necesita al menos 8 caracteres." |
| Una contraseña de privacidad de menos de 8 caracteres | "La contraseña de privacidad necesita al menos 8 caracteres." |
| Un usuario de más de 32 caracteres, o una community de más de 255 bytes | "El usuario admite como máximo 32 caracteres y la community como máximo 255 bytes." |
| Un tiempo de espera de respuesta fuera de 100 a 60000, o reintentos fuera de 0 a 5 | La casilla vuelve al valor vigente y dice "Ingrese un número entre 100 y 60000." o "Ingrese un número entre 0 y 5." |
Al guardar se aplican las mismas reglas que en la tarjeta, y el registro de acciones lo dice cuando rechaza una: "El dispositivo 'UPS room 1' tiene un ajuste SNMP que su driver no puede usar. Ábralo y corrija el campo que marca su panel." La community y las dos contraseñas se guardan como cualquier credencial de dispositivo (vea Credenciales y certificados): protegidas en reposo para la cuenta de Windows que las ingresó, selladas en la exportación de la configuración, y nunca mostradas en la Base URI, el diario técnico ni la respuesta de un agente. Una ingresada con otra cuenta de Windows vuelve vacía, y el dispositivo la espera como a una nunca indicada.
Direccionamiento del tag
El OID
Un tag de este driver lee un objeto de su agente. La tarjeta Fuente del tag contiene la casilla OID, con la pista "Un OID en números, por ejemplo 1.3.6.1.2.1.1.3.0, o un nombre estándar con su instancia, por ejemplo sysUpTime.0, ifInOctets.2 o upsBatteryStatus.0" debajo. Toda solicitud lleva el número, sea cual sea la forma en que se escribe el tag:
| Escrito | Se lee como |
|---|---|
1.3.6.1.2.1.1.3.0, .1.3.6.1.2.1.1.3.0, iso.3.6.1.2.1.1.3.0 |
Ese número, que el panel llama sysUpTime.0. |
sysUpTime.0, sysUpTime, SNMPv2-MIB::sysUpTime.0, sin distinguir mayúsculas |
Un valor único, cuya única instancia .0 puede omitirse. |
ifInOctets.2 |
Una columna de una tabla con el índice de su fila, aquí la interfaz 2, que siempre se escribe. |
enterprises.318.1.1.1.2.2.1.0 |
Una rama con los números que cuelgan de ella: un objeto de la MIB propia del equipo, que aparece por su número. |
Debajo de la casilla, de solo lectura, el OID de las dos formas:
| Lectura | Lo que muestra |
|---|---|
| Nombre en la MIB | El nombre estándar del objeto con su instancia (ifInOctets.2), y debajo lo que la MIB dice del objeto: su MIB, la clase de valor que guarda y si admite escritura, como IF-MIB · Counter32 · solo lectura o UPS-MIB · Integer32 · admite escritura. "Sin nombre estándar" para un objeto que el driver no conoce por su nombre. |
| OID numérico | El OID en números, que es lo que lleva toda solicitud. |
Un objeto sin nombre estándar agrega la línea "Un objeto de la MIB propia del equipo: aparece por su número, porque no se lee ningún archivo de MIB." Un tag cuyo OID el driver no puede leer no se guarda, y la página del tag dice por qué:
| Usted ingresa | La página del tag dice |
|---|---|
| Ningún OID | "OID es obligatorio para este driver." |
| Un nombre que el driver no conoce | "Este nombre no es uno de los objetos MIB estándar que conoce el driver. Escriba el OID en números." |
Una columna sin su fila, como ifInOctets |
"Una columna de tabla necesita el índice de su fila, por ejemplo ifInOctets.1." |
Un valor único con una instancia distinta de 0, como sysUpTime.1 |
"Un valor único tiene una sola instancia, .0, que puede omitirse." |
Una rama sola, como enterprises o ifTable |
"Una rama del árbol no nombra ningún valor. Escriba los números del objeto que cuelga de ella." |
| Un primer número mayor que 2, un segundo de 40 o más, más de 128 números, o un número mayor que 4294967295 | "Un OID empieza con 0, 1 o 2 y un número menor que 40, y tiene como máximo 128 números de hasta 4294967295." |
| Cualquier otra cosa que no sea un OID | "Escriba el OID en números, por ejemplo 1.3.6.1.2.1.1.3.0, o un nombre estándar con su instancia, por ejemplo sysUpTime.0." |
Al guardar se aplica la misma regla:
"El tag 'Battery status' no nombra ningún OID que el driver SNMP pueda leer. Ábralo y corrija la dirección que marca el panel del tag."
La línea de solo lectura Dirección de origen (bus) muestra el número que recibe el driver:
1.3.6.1.2.1.33.1.2.1.0 para un tag escrito upsBatteryStatus.0.
Los nombres que conoce el driver
El driver lleva una tabla de los objetos de las MIB estándar que vale la pena nombrar, escrita a partir de los RFC, de modo que un nombre significa lo mismo en cualquier estación. No se lee ningún archivo de MIB.
| MIB | Lo que nombra |
|---|---|
| SNMPv2-MIB (RFC 3418) | El grupo system: sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices. |
| IF-MIB (RFC 2863) | ifNumber, la tabla de interfaces (ifDescr, ifOperStatus, ifInOctets, ifOutErrors y el resto) y su extensión con los contadores de 64 bits (ifName, ifHCInOctets, ifHCOutOctets, ifHighSpeed, ifAlias). |
| UPS-MIB (RFC 1628) | La identidad, la batería, la entrada, la salida, el bypass, las alarmas, la prueba, el control y la configuración de un no-break: upsBatteryStatus, upsEstimatedChargeRemaining, upsOutputSource, upsOutputPercentLoad y el resto. |
| ENTITY-SENSOR-MIB (RFC 3433) | La tabla de sensores: entPhySensorType, entPhySensorScale, entPhySensorValue, entPhySensorOperStatus y el resto. |
| ENTITY-MIB (RFC 6933) | El nombre, la descripción y la clase de una entidad física, que rotulan un sensor: entPhysicalName, entPhysicalDescr, entPhysicalClass. |
| HOST-RESOURCES-MIB (RFC 2790) | El sistema (hrSystemUptime, hrSystemProcesses), la tabla de almacenamiento (hrStorageUsed) y la tabla de procesadores (hrProcessorLoad). |
driver_capabilities enumera todos los nombres con su OID; vea
Herramientas del agente.
Tipos de dato y acceso
La lista Tipo de dato ofrece solo aquello en lo que el objeto se lee sin pérdida:
| El objeto guarda | Se lee de forma más natural como | También se ofrece |
|---|---|---|
| Integer32, enumeraciones y TruthValue incluidos | Int32 | Int64, Float, Double, String |
| Counter32, Gauge32, TimeTicks (centésimas de segundo) | UInt32 | Int64, Double, String |
| Counter64 | UInt64 | Double, String |
| DisplayString | String | |
| Bytes, una dirección IP o un OID | String: los bytes en hexadecimal (00:1A:2B), la dirección con puntos, el OID con puntos |
|
| Un objeto sin nombre estándar | Float | Int32, UInt32, Int64, UInt64, Double, String: la respuesta del agente decide en la lectura |
Un contador no se ofrece como Float, que redondea por encima de 16,777,216, ni un Counter64 como Int64, que rechazaría un conteo por encima de su mitad. Boolean no se ofrece nunca: SNMP no tiene booleano, y su TruthValue (1 verdadero, 2 falso) y el 0 y el 1 propios de un equipo leerían el mismo tipo de dos maneras opuestas, así que un estado se lee como Int32. Cuando cambia el OID, un tipo en que el nuevo objeto no se lee pasa a ser aquel en que se lee de forma más natural; y un tipo en que no se lee se rechaza, nombrando aquellos en que sí: "ifHCOutOctets.2 se lee como uno de estos: UInt64, Double, String."
Un objeto estándar que su MIB declara de solo lectura (los contadores, sysUpTime, los estados) se
ofrece solo como Solo lectura, y el campo Acceso dice
"Solo lectura: el dispositivo reporta este valor y nada desde fuera lo establece."
Un objeto estándar que su MIB declara escribible (sysContact, sysName, sysLocation,
ifAdminStatus, ifAlias, los objetos de prueba, control y configuración de la UPS-MIB) y un objeto de
la MIB propia del equipo reciben todos los accesos: si el agente admite la escritura es respuesta suya.
Lectura
En el intervalo de sondeo de cada tag, la estación envía un GET. Lo que responde el agente decide lo que muestra el tag (vea La cadena de conversión):
| El agente responde | Lo que hace la lectura |
|---|---|
| El valor | El valor, en el tipo del tag, antes de que lo conviertan las etapas del propio tag. Un texto que contiene un número (23.5, que escriben algunos equipos) se lee en un tag numérico. |
| Un valor que el tipo del tag no puede contener, como un número negativo en un UInt32 | Una lectura fallida de ese tag, con el motivo; el dispositivo sigue leyendo sus otros tags. |
| noSuchObject o noSuchInstance, o un error en ese único objeto | Una lectura fallida de ese tag, nombrada con la respuesta del agente; el dispositivo sigue leyendo sus otros tags. En SNMPv1, donde un objeto ausente hace rechazar la solicitud entera, el driver vuelve a preguntar sin él. |
| Nada dentro del tiempo de espera de respuesta, tras todos los reintentos | Silencio: el dispositivo queda sin conexión y se reconecta, y la política del tag para un dispositivo que no respondió decide lo que muestra. La causa nombra el agente, la espera y los intentos, y recuerda que un agente también calla ante una community o un usuario SNMPv3 que no acepta. |
| Un reporte SNMPv3 (un usuario desconocido, una contraseña o un protocolo equivocados, un nivel de seguridad que el agente no acepta), o la respuesta del host de que ningún agente escucha en el puerto | Una falla de conexión con esa causa, en el diario técnico y en el último error del dispositivo; el dispositivo se reconecta. |
Un dispositivo hace una solicitud a la vez. Una lectura pide el objeto del tag y, en la misma solicitud, los otros tags del dispositivo que no tienen respuesta reciente, hasta 32 OID; a un agente que responde que la solicitud es demasiado grande (tooBig) se le envía la mitad desde entonces. Una respuesta traída así sirve a la lectura de otro tag mientras sea más reciente que la mitad del intervalo de sondeo de ese tag, de modo que cuarenta tags cuestan una o dos solicitudes por pasada. El motor de un agente SNMPv3 se aprende una vez por conexión, y una solicitud que el agente declara fuera de su ventana de tiempo se envía una vez más con las cifras del propio agente.
Escritura
Un tag cuyo acceso escribe envía un SET por la cola del dispositivo. Una escritura pasa por el mismo embudo que la de cualquier otro driver: la casilla de escritura recibe el valor de ingeniería, y las etapas de conversión se invierten antes de enviar el valor bruto (vea Connector). El SET lleva la clase de valor con la que el agente respondió por última vez al objeto; si no la hay, la que declara su MIB; si tampoco, la que responde ahora un GET; y por último la del propio tag (un Int32 como Integer32, un UInt32 como Gauge32, un String como OCTET STRING). Un valor que esa clase no puede contener se rechaza antes de enviar nada.
| El agente responde | Lo que reporta la escritura |
|---|---|
| Ningún error | Hecho. Se olvida toda respuesta que el dispositivo guardaba, así que la próxima lectura vuelve a preguntar. |
| Un estado de error | "Escritura rechazada por el equipo: <reason>.", con el motivo nombrando el estado como lo escribe el RFC 3416, como notWritable (17), wrongType (7) o wrongValue (10), y readOnly (4) en SNMPv1. |
| Nada dentro del tiempo de espera de respuesta, tras todos los reintentos | "Escritura no confirmada: el equipo no respondió a tiempo." |
Descubrimiento
La tarjeta Alcance del escaneo
Para Configurar el conector, la página del driver lleva su tarjeta Alcance del escaneo, bajo la línea "Recorre los subárboles estándar de un agente y lista lo que encuentra. Un agente SNMPv3 se escanea a través de su dispositivo: elíjalo como el agente que se va a escanear."
| Campo | Significado | Predeterminado |
|---|---|---|
| Agente que escanear | Una dirección escrita aquí, o un dispositivo del driver por su nombre. El agente de un dispositivo se lee con su host, su puerto, su versión, sus ajustes y sus credenciales tal como están guardados, y una edición del dispositivo que aún espera guardarse se guarda antes. Es la única manera de escanear un agente SNMPv3. | Una dirección escrita aquí |
| Dirección del agente | Un agente escrito: su nombre de host o su dirección IP, y su puerto tras dos puntos cuando no es el de abajo. | vacío |
| Puerto | Un agente escrito: de 1 a 65535. | 161 |
| Versión de SNMP | Un agente escrito: SNMPv1 o SNMPv2c. | SNMPv2c |
| Community | Un agente escrito: la community a la que responde, en una casilla que oculta lo que se escribe, con public como pista. Debajo: "Solo se usa en este escaneo. Un dispositivo agregado desde el resultado la conserva como su community." |
vacío |
| Subárboles | Una casilla cada uno: Sistema (SNMPv2-MIB), Interfaces de red (IF-MIB), No-break (UPS-MIB), Sensores (ENTITY-SENSOR-MIB) y Recursos del host (HOST-RESOURCES-MIB). | todos menos Recursos del host |
| Recorrer también | "Un subárbol más, en números o bajo un nombre estándar, por ejemplo enterprises.318. Los objetos propios del equipo vuelven como números." | vacío |
Lo que aún le falta al alcance se dice en rojo debajo de la tarjeta, y Descubrir sigue en gris hasta que está completo:
| El alcance | La tarjeta dice |
|---|---|
| Un agente escrito sin dirección | "Escriba la dirección del agente SNMP que se va a escanear." |
| Un agente escrito cuya dirección no es un host | "'http://192.168.0.30' no es la dirección de un agente SNMP. Escriba su nombre de host o su dirección IP, con el puerto si hace falta, por ejemplo 192.168.0.30 o 192.168.0.30:161." |
| Un agente escrito sin community, o con una de más de 255 bytes | "Escriba la community a la que responde el agente, de 255 bytes como máximo." |
| Un dispositivo que ya no existe | "El dispositivo SNMP elegido para escanear ya no existe. Elija otro agente que escanear." |
| Un dispositivo sin su host o sin una credencial que necesita su agente | "Al dispositivo 'UPS room 1' aún le falta su host o una credencial que necesita su agente. Complete primero su tarjeta SNMP." |
| Un subárbol que recorrer que no es un OID | "'vendor' no es un OID que recorrer. Escríbalo en números o bajo un nombre estándar, por ejemplo enterprises.318." |
| Nada marcado y nada indicado | "Marque al menos un subárbol, o indique uno que recorrer." |
Cuando el dispositivo que se va a escanear tiene una edición que no se puede guardar, el escaneo no empieza: "El descubrimiento no se inició porque no se pudo guardar la edición del dispositivo que se va a escanear."
Lo que ofrece el escaneo
Descubrir le pregunta primero al agente su nombre (sysName.0), lo que también prueba que el agente
responde a esas credenciales, y luego recorre cada subárbol marcado y el indicado, con GETBULK en
SNMPv2c y SNMPv3 y GETNEXT en SNMPv1, hasta que el agente responde fuera de él. La línea de progreso
cuenta lo que ha leído:
"Recorriendo el agente SNMP en 192.168.10.40:161: 120 objetos encontrados." Un escaneo lista como
máximo 2000 objetos y recorre durante 60 segundos como máximo; cuando se corta ahí, o cuando el agente
calla a la mitad, conserva lo que encontró y lo dice:
"El recorrido de 192.168.10.40:161 se detuvo antes de tiempo, con 2000 objetos encontrados. Un escaneo lista como máximo 2000 objetos, recorre durante 60 s como máximo y se detiene donde el agente deja de responder."
El escaneo ofrece un candidato por agente, con el nombre de su sysName (el nombre del dispositivo o el host cuando el agente no da ninguno), con la versión, el tiempo de espera y los reintentos con que se leyó, y los objetos que encontró como tags candidatos:
| Objeto encontrado | Nombre del tag | Tipo de dato | Acceso |
|---|---|---|---|
| Un valor único que el driver conoce por su nombre | Su nombre, sin el .0: sysUpTime |
Aquel en que el valor respondido se lee de forma más natural | Lectura y escritura donde su MIB lo declara escribible, Solo lectura en los demás casos |
| Una columna de una tabla que el driver conoce por su nombre | Su nombre y su fila: ifInOctets.2 |
El mismo | El mismo |
| Un objeto de la MIB propia del equipo | Su número: 1.3.6.1.4.1.318.1.1.1.2.2.1.0 |
El mismo | Solo lectura |
Un valor que ningún tipo de tag puede contener se deja fuera. Un dispositivo agregado desde un escaneo escrito conserva la community que usó el escaneo, protegida como cualquier credencial de dispositivo; un dispositivo agregado desde el escaneo de un dispositivo lleva las credenciales de ese dispositivo. Un candidato cuyo agente ya lee un dispositivo del driver (el dispositivo escaneado, u otro en el mismo host y puerto) se marca Ya configurado: su tarjeta lista solo los objetos que ningún tag de ese dispositivo lee todavía, y un OID escrito por nombre y por número cuenta como el mismo, y Agregar tags, antes de Abrir, agrega los marcados a ese dispositivo. El resto del comportamiento del escaneo está en Descubrimiento.
La propia página de un dispositivo hace lo mismo sin la página de su driver: Descubrir tags, en el encabezado de su tarjeta de tags, recorre el agente de ese dispositivo con sus ajustes y credenciales, por los subárboles estándar y la rama del fabricante que sus tags ya leen (enterprises.318 para un tag bajo ella), y ofrece solo los objetos para los que todavía no tiene tag (vea Descubrir los tags de un dispositivo).
Ejemplo: un no-break por SNMPv2c
Un no-break con tarjeta de red responde SNMPv2c en 192.168.10.40, con una community de lectura definida en esa tarjeta. Lea su batería:
- En la página del driver, Agregar dispositivo; llámelo
UPS room 1, escriba Host o IP 192.168.10.40 y deje Puerto en 161. - En la tarjeta Agente SNMP deje SNMPv2c, escriba la community de lectura de la tarjeta en Community, y deje un Tiempo de espera de respuesta (ms) de 2000 y 1 en Reintentos. La línea que pedía la community desaparece.
- Agregar tag
Battery status, OIDupsBatteryStatus.0, Tipo de dato Int32. Debajo de la casilla, el nombre en la MIB dice upsBatteryStatus.0 conUPS-MIB · Integer32 · solo lectura, el OID numérico 1.3.6.1.2.1.33.1.2.1.0, y el acceso se queda en Solo lectura. El valor es 1 unknown, 2 batteryNormal, 3 batteryLow o 4 batteryDepleted. - Agregar tag
Battery charge, OIDupsEstimatedChargeRemaining.0, Tipo de dato Int32, Unidad %. - Si el no-break lo reporta, Agregar tag
Minutes remaining, OIDupsEstimatedMinutesRemaining.0, Tipo de dato Int32, Unidad min.
La Base URI dice snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1. Un agente hace lo
mismo con las herramientas:
device_upsert name="UPS room 1" driver=Snmp host=192.168.10.40 snmpVersion=V2c snmpCommunity="<the UPS card's read community>"
tag_upsert device="UPS room 1" name="Battery status" address=upsBatteryStatus.0 opcUaType=Int32
tag_upsert device="UPS room 1" name="Battery charge" address=upsEstimatedChargeRemaining.0 opcUaType=Int32 unit=%
tag_upsert device="UPS room 1" name="Minutes remaining" address=upsEstimatedMinutesRemaining.0 opcUaType=Int32 unit=min
Ejemplo: los contadores de interfaz de un switch por SNMPv3
Un switch administrable en 192.168.10.2 responde SNMPv3 para el usuario scada, configurado en el
switch con autenticación SHA-256 y privacidad AES-128. Lea el tráfico y el estado de su puerto 2:
- Agregar dispositivo; llámelo
Core switch, Host o IP 192.168.10.2, Puerto 161. - En la tarjeta Agente SNMP elija SNMPv3, escriba
scadaen Usuario SNMPv3, deje Firmado y cifrado (authPriv), elija SHA-256 en Protocolo de autenticación y escriba su contraseña, deje AES-128 en Protocolo de privacidad y escriba su contraseña: cada una la que el switch guarda parascada, de al menos 8 caracteres. - Agregar tag
Port 2 in, OIDifHCInOctets.2. El tipo de dato pasa a UInt64, el tipo en que se lee un contador de 64 bits, y la lista solo ofrece UInt64, Double y String; Unidad B. - Agregar tag
Port 2 out, OIDifHCOutOctets.2, UInt64, Unidad B. - Agregar tag
Port 2 state, OIDifOperStatus.2, Tipo de dato Int32: 1 up, 2 down, 3 testing, 7 lowerLayerDown.
El .2 es el índice de la interfaz en el switch, el que nombra ifName.2; un escaneo del subárbol de
interfaces lista cada interfaz con su índice. La Base URI dice
snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1.
Con las herramientas, un opcUaType en que el objeto no se lee, como Int32 en ifHCOutOctets.2, se
rechaza con los tipos en que sí se lee:
device_upsert name="Core switch" driver=Snmp host=192.168.10.2 snmpVersion=V3 username=scada password="<authentication password>" snmpSecurityLevel=AuthPriv snmpAuthProtocol=Sha256 snmpPrivacyProtocol=Aes128 snmpPrivacyPassword="<privacy password>"
tag_upsert device="Core switch" name="Port 2 in" address=ifHCInOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 out" address=ifHCOutOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 state" address=ifOperStatus.2 opcUaType=Int32
Herramientas del agente
driver_capabilities describe este driver en snmp: las versiones y las credenciales que admite
cada una, los niveles de seguridad y los protocolos, el tiempo de espera de respuesta y los reintentos,
cómo se escribe un OID, los tipos por clase de valor, todos los nombres que conoce el driver con su
MIB, su OID y si admiten escritura, cómo se comportan lecturas y escrituras, el descubrimiento y los
dos ejemplos de arriba. device_upsert driver=Snmp admite host, port (161 predeterminado),
snmpVersion (V1, V2c, el predeterminado, o V3), snmpCommunity en SNMPv1 y SNMPv2c ('' la
borra), y en SNMPv3 username (el usuario), password (su contraseña de autenticación, de al menos 8
caracteres), snmpSecurityLevel (AuthPriv, el predeterminado, AuthNoPriv o NoAuthNoPriv),
snmpAuthProtocol (Md5, Sha1, el predeterminado, Sha256, Sha384 o Sha512),
snmpPrivacyProtocol (Des, Aes128, el predeterminado, Aes192 o Aes256) y
snmpPrivacyPassword; con responseTimeoutMs (de 100 a 60000, 2000 predeterminado) y snmpRetries
(de 0 a 5, 1 predeterminado). Una community en un dispositivo SNMPv3, o un campo SNMPv3 en un
dispositivo de community, se rechaza. Un dispositivo que devuelven las herramientas lleva snmp: la
versión, hasCommunity, el nivel de seguridad y los protocolos vigentes, hasPrivacyPassword, el
tiempo de espera, los reintentos y missingCredential, la credencial que aún espera; nunca se devuelve
ningún secreto. tag_upsert admite el OID como address y opcUaType, que de manera predeterminada
es el tipo en que el objeto se lee de forma más natural; wireQuantity y eipPath se rechazan.
device_discover driver=Snmp recorre o bien target (un host, con port cuando no es 161) con
snmpVersion (V1 o V2c) y snmpCommunity, o bien snmpDevice, el nombre de un dispositivo del
driver, que es la única manera de escanear un agente SNMPv3; snmpSubtrees elige los subárboles
estándar (System, Interfaces, Ups, Sensors, HostResources, separados por comas) y
snmpSubtree agrega uno más. Las herramientas no conservan la community de un escaneo: un dispositivo
creado a partir de lo que encontró el escaneo la recibe de nuevo en device_upsert, y los tags que le
faltan a un dispositivo configurado se agregan con tag_upsert. Las demás herramientas están en
Herramientas del agente.
Límites que conviene conocer
- Los traps y los informs, lo que el equipo envía por su cuenta cuando ocurre algo, no se reciben: cada valor se lee en su intervalo de sondeo, así que una batería que se agota se ve en la siguiente lectura de su estado.
- No se importa ningún archivo de MIB. Los nombres que conoce el driver son los de las MIB estándar que
lleva; un objeto de la MIB propia del equipo, bajo
enterprises, se escribe y se muestra por su número, y lo que significa se lee en la documentación del fabricante. - La estación no es un agente SNMP: nada lee la propia estación por SNMP.
- Un escaneo solo llega a un agente SNMPv3 a través de un dispositivo que guarda su usuario y sus contraseñas, y no prueba ninguna community ni ningún usuario por su cuenta.
- Un escaneo lista como máximo 2000 objetos y recorre durante 60 segundos como máximo: en un switch grande, desmarque los subárboles que no hacen falta, o indique el que sí.
- Ningún tag es Boolean: un TruthValue o un encendido y apagado propio del equipo se lee como Int32.