SNMP Traps son notificaciones enviadas desde un dispositivo habilitado para SNMP a un gestor de SNMP. Cuando un dispositivo de red encuentra una actividad inusual, como un cambio de estado repentino en un equipo, el dispositivo activa un evento de SNMP Traps.
La monitorización de SNMP Traps te ayuda a detectar problemas que, de otro modo, podrían pasar desapercibidos debido a la inestabilidad del dispositivo. Por ejemplo, si una interfaz oscila entre un estado disponible y uno interrumpido cada 15 segundos, basarse en sondeos que se ejecutan cada 60 segundos podría llevarte a juzgar erróneamente el grado de inestabilidad de red. Traps también pueden llenar vacíos de visibilidad para ciertos componentes de hardware, como la batería del dispositivo o el estado del chasis.
Datadog Agent v7.37+ admite la escucha de SNMP Traps, permitiéndote configurar monitores para eventos de Trap específicos.
Configuración
Para activar la escucha de SNMP Traps, añade lo siguiente a tu archivo datadog.yaml:
network_devices:namespace:<NAMESPACE># optional, defaults to "default".snmp_traps:enabled:trueport:9162# on which ports to listen for trapscommunity_strings:# which community strings to allow for v2 traps- <STRING_1>- <STRING_2>bind_host:0.0.0.0users:# SNMP v3- user:"user"authKey:myAuthKeyauthProtocol:"SHA"privKey:myPrivKeyprivProtocol:"AES"- user:"user"authKey:myAuthKeyauthProtocol:"MD5"privKey:myPrivKeyprivProtocol:"DES"- user:"user2"authKey:myAuthKey2authProtocol:"SHA"# choices: MD5, SHA, SHA224, SHA256, SHA384, SHA512privKey:myPrivKey2privProtocol:"AES"# choices: DES, AES (128 bits), AES192, AES192C, AES256, AES256C
Nota: Se admiten múltiples usuarios y contraseñas v3 a partir del Datadog Agent 7.51 o posterior.
Nota: Asegúrate de que tus reglas de firewall permiten el tráfico UDP entrante en el puerto configurado.
Una vez configurados, SNMP Traps se reenvían como logs y se pueden encontrar en el Log Explorer con la siguiente consulta de búsqueda: source:snmp-traps.
Nota: Aunque SNMP Traps se reenvían como logs, logs_enabled no necesita estar configurado como true.
Uso del puerto 162 de SNMP Trap por defecto
La vinculación a un número de puerto inferior a 1024 requiere permisos elevados. Para vincularte a un número de puerto como el puerto predeterminado 162 de SNMP Trap, haz lo siguiente:
Concede acceso al puerto mediante el comando setcap:
Al igual que en Network Device Monitoring, los espacios de nombres pueden utilizarse como etiquetas (tags) para diferenciar entre múltiples dispositivos de red que pueden compartir la misma IP privada. Por ejemplo, consideremos el caso de dos enrutadores: uno en Nueva York y otro en París, que comparten la misma IP privada. Debería haber un Agent en el centro de datos de Nueva York y otro en el de París. Deberías etiquetar estos con espacio de nombres: nyc y espacio de nombres: paris, respectivamente.
El espacio de nombres se puede utilizar entonces para pasar de forma única de un SNMP Trap al dispositivo emisor, o del dispositivo emisor a un SNMP Trap.
Es crítico tener coherencia entre las múltiples configuraciones del Agent. Por ejemplo, si tienes dos Agents configurados (por ejemplo, uno para la recolección de tramps y el otro para métricas), debes asegurarte de que los espacios de nombres existan en ambos lugares. Alternativamente, asegúrate de que los espacios de nombres no existen en ninguno.
Resolución
Cada Trap SNMP tiene un formato específico basado en OID. El Datadog Agent realiza un paso de resolución para convertir los OID en cadenas más legibles.
Un SNMP Trap consiste en:
Información del emisor (por ejemplo, la IP del dispositivo)
Un OID que define el tipo de trap
“Variables”, es decir, una lista de pares (OID:value) que proporciona un contexto adicional para el trap.
La descodificación se realiza en el lado del Agent, utilizando una asignación almacenada en disco en $<PATH_TO_AGENT_CONF.D>/snmp.d/traps_db/dd_traps_db.json.gz. Datadog admite más de 11.000 bases de información de gestión (MIBs) diferentes.
Formato de asignación
Las asignaciones se almacenan como archivos TrapsDB y pueden ser YAML o JSON.
Para ampliar las capacidades del Agent, crea tus propias asignaciones y colócalas en el directorio $<PATH_TO_AGENT_CONF.D>/snmp.d/traps_db/.
Puedes escribir estas asignaciones a mano, o generar asignaciones a partir de una lista de MIBs utilizando el kit de herramientas para desarrolladores de Datadog, ddev.
Generar un archivo TrapsDB a partir de una lista de MIBs
Pon todos tus MIBs en una carpeta dedicada. A continuación, ejecuta:
ddev meta snmp generate-traps-db -o ./output_dir/ /path/to/my/mib1 /path/to/my/mib2 /path/to/my/mib3 ...
Si tus MIBs tienen dependencias, ddev las busca en línea si se pueden encontrar.
Si se producen errores debido a la falta de dependencias y tienes acceso a los archivos MIB que faltan, coloca los archivos en una carpeta separada y utiliza el parámetro --mib-sources <DIR> para que ddev sepa dónde encontrarlos. Asegúrate de que cada nombre de archivo es el mismo que el nombre de MIB (por ejemplo, SNMPv2-SMI y no snmp_v2_smi.txt).