Áú»¢¶Ä²©

3 Capturador SNMP

¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô general

Recibir capturas SNMP es lo opuesto a consultar dispositivos habilitados para SNMP.

En este caso, la informaci¨®n se env¨ªa desde un dispositivo habilitado para SNMP y se recoge o "captura" por Áú»¢¶Ä²©.

Por lo general, las capturas se env¨ªan ante alg¨²n cambio de condici¨®n y el agente se conecta al servidor en el puerto 162 (a diferencia del puerto 161 en el lado del agente que se utiliza para consultas). El uso de capturas puede detectar algunos problemas cortos que ocurren durante el intervalo de consulta y pueden ser pasados por alto por los datos de consulta.

La recepci¨®n de capturas SNMP en Áú»¢¶Ä²© est¨¢ dise?ada para funcionar con snmptrapd y uno de los mecanismos para pasar las capturas a Áú»¢¶Ä²© - ya sea un script Bash o Perl o SNMPTT.

La forma m¨¢s sencilla de configurar el monitoreo de capturas despu¨¦s de configurar Áú»¢¶Ä²© es utilizar la soluci¨®n de script Bash, porque Perl y SNMPTT suelen faltar en las distribuciones modernas y requieren una configuraci¨®n m¨¢s compleja. Sin embargo, esta soluci¨®n utiliza un script configurado como "traphandle". Para un mejor rendimiento en sistemas de producci¨®n, utilice la soluci¨®n Perl integrada (ya sea script con la opci¨®n do perl o SNMPTT).

El flujo de trabajo de recibir una captura:

  1. snmptrapd recibe una captura
  2. snmptrapd pasa la captura al script del receptor (Bash, Perl) o SNMPTT
  3. El receptor analiza, formatea y escribe la captura en un archivo
  4. El capturador SNMP de Áú»¢¶Ä²© lee y analiza el archivo de captura
  5. Para cada captura, Áú»¢¶Ä²© encuentra todos los elementos del "capturador SNMP" con los interfaces del equipo que coinciden con la direcci¨®n de captura recibida. Tenga en cuenta que s¨®lo la "IP" o "DNS" seleccionada en la interfaz del equipo se utiliza durante la comprobaci¨®n.
  6. Para cada m¨¦trica encontrada, la captura se compara con la expresi¨®n regular en snmptrap[expresi¨®n regular]. La captura se establece como el valor de todas las m¨¦tricas coincidentes. Si no se encuentra ninguna m¨¦trica coincidente y hay una m¨¦trica snmptrap.fallback, la captura se establece como el valor de esa.
  7. Si la captura no se estableci¨® como el valor de ninguna m¨¦trica, Áú»¢¶Ä²© de forma predeterminada registra la captura no coincidente. (Esto se configura mediante "Registrar capturas SNMP no coincidentes" en Administraci¨®n ¡ú General ¡ú Otros.)

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô de capturas SNMP

Configurar en la interfaz los siguientes campos espec¨ªficos para este tipo de m¨¦trica:

  • Su equipo debe tener una interfaz SNMP

En Recopilaci¨®n de datos ¡ú Equipos, en el campo Interfaz de equipo establezca una interfaz SNMP con la direcci¨®n IP o DNS correcta. La direcci¨®n de cada captura recibida se compara con las direcciones IP y DNS de todos los interfaces SNMP para encontrar los equipos correspondientes.

  • Configurar la m¨¦trica

En el campo Clave utilice una de las claves de captura SNMP:

Clave
¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô Valor de retorno Comentarios
snmptrap[regexp]
Captura todas las capturas SNMP que coinciden con la expresi¨®n regular especificada en regexp. Si no se especifica la expresi¨®n regular, detecta cualquier trampa. Trampa SNMP Este elemento solo se puede configurar para interfaces SNMP.
Las macros de usuario y las expresiones regulares globales se admiten en el par¨¢metro de esta clave de elemento.
snmptrap.fallback
Captura todas las capturas SNMP que no fueron capturadas por ninguno de los elementos snmptrap[] para esa interfaz. Trampa SNMP Este elemento solo se puede configurar para interfaces SNMP.

En este momento no se admite la coincidencia de expresiones regulares multil¨ªnea.

Establezca el Tipo de informaci¨®n en 'Registro' para que se analicen las marcas de tiempo. Tenga en cuenta que tambi¨¦n se aceptan otros formatos como "Num¨¦rico" pero puede requerir un controlador de capturas personalizado.

Para que funcione la supervisi¨®n de capturas SNMP, primero se debe configurar correctamente (ver m¨¢s abajo).

1 °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô de la supervisi¨®n de trampas SNMP

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô del servidor/proxy Áú»¢¶Ä²©

Para leer las capturas, el servidor Áú»¢¶Ä²© o el proxy deben estar configurados para iniciar el proceso de captura SNMP y apuntar al archivo de captura que se est¨¢ escribiendo por SNMPTT o un receptor de captura Bash/Perl. Para hacer eso, edite el archivo de configuraci¨®n (zabbix_server.conf o zabbix_proxy.conf):

StartSNMPTrapper=1
       SNMPTrapperFile=[TRAP FILE]

Si se utiliza el par¨¢metro systemd , es poco probable que este archivo funcione en /tmp.

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô del receptor de capturas Bash

Requisitos: s¨®lo snmptrapd.

Un receptor de capturas Bash [script] (https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh) se puede utilizar para pasar capturas al servidor Áú»¢¶Ä²© directamente desde snmptrapd. Para configurarlo, agregue la opci¨®n traphandle al archivo de configuraci¨®n de snmptrapd (snmptrapd.conf), consulte el [ejemplo] (https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/etc/snmp/snmptrapd.conf).

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô del receptor de capturas de Perl

Requisitos: Perl, Net-SNMP compilado con --enable-embedded-perl (hecho por defecto desde Net-SNMP 5.4)

Un receptor de capturas Perl (busque misc/snmptrap/zabbix_trap_receiver.pl) se puede utilizar para pasar capturas al servidor Áú»¢¶Ä²© directamente desde snmptrapd. Para configurarlo:

  • agregue el script Perl al archivo de configuraci¨®n snmptrapd (snmptrapd.conf), por ejemplo:
perl do "[FULL PATH TO PERL RECEIVER SCRIPT]";
  • configurar el receptor, por ejemplo:
$SNMPTrapperFile = '[TRAP FILE]';
       $DateTimeFormat = '[DATE TIME FORMAT]';

Si el nombre del script no se cita, snmptrapd se negar¨¢ a comenzar con mensajes similares a estos:

Los modificadores de expresiones regulares "/l" y "/a" son mutuamente excluyentes en (eval 2) l¨ªnea 1, al final de la l¨ªnea
       El modificador Regexp "/l" no puede aparecer dos veces en (eval 2) l¨ªnea 1, al final de la l¨ªnea
°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô de SNMPTT

Al principio, snmptrapd debe configurarse para utilizar SNMPTT.

Para obtener el mejor rendimiento, SNMPTT debe configurarse como un demonio que usa snmptthandler-embedded para pasarle las capturas. Ver instrucciones para [configurar SNMPTT] (http://snmptt.sourceforge.net/docs/snmptt.shtml).

Cuando SNMPTT est¨¦ configurado para recibir las capturas, configure snmptt.ini:

  1. habilite el uso del m¨®dulo Perl del paquete NET-SNMP:
net_snmp_perl_enable = 1
  1. registre las capturas en el archivo de capturas que Áú»¢¶Ä²© leer¨¢:
log_enable = 1
       log_file = [ARCHIVO CAPTURA]
  1. establezca el formato de fecha y hora:
date_time_format = %H:%M:%S %Y/%m/%d

El paquete "net-snmp-perl" se elimin¨® en RHEL 8.0-8.2; se volvi¨® a agregar en RHEL 8.3. Para obtener m¨¢s informaci¨®n, consulte los problemas conocidos.

Ahora formatee las capturas para que Áú»¢¶Ä²© las reconozca (edite snmptt.conf):

  1. Cada instrucci¨®n FORMAT debe comenzar con "ZBXTRAP [direcci¨®n]", donde [direcci¨®n] se comparar¨¢ con las direcciones IP y DNS de los interfaces SNMP en Áú»¢¶Ä²©. P.ej.:
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
       FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
  1. Vea m¨¢s sobre el formato de captura SNMP a continuaci¨®n.

No utilice capturas desconocidas: Áú»¢¶Ä²© no podr¨¢ reconocerlas. Las capturas desconocidas se pueden manejar definiendo un evento general en snmptt.conf:

EVENT general .* "General event" Normal
Formato de captura SNMP

Todos los receptores de capturas Perl personalizados y la configuraci¨®n de capturas SNMPTT deben formatear la captura de la siguiente manera:

[timestamp] [the trap, part 1] ZBXTRAP [address] [the trap, part 2]

»å¨®²Ô»å±ð

  • [timestamp] - la marca de tiempo utilizada para los elementos del registro
  • ZBXTRAP - encabezado que indica que una nueva captura comienza en esta l¨ªnea
  • [direcci¨®n] - Direcci¨®n IP utilizada para encontrar el equipo para esta captura

Tenga en cuenta que "ZBXTRAP" y "[direcci¨®n]" se eliminar¨¢n del mensaje. durante el procesamiento. Si la captura tiene otro formato, Áú»¢¶Ä²© podr¨ªa analizar las capturas de forma no esperada.

Captura de ejemplo:

11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2

Esto dar¨¢ como resultado la siguiente captura para la interfaz SNMP con IP=192.168.1.1:

11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events"localhost - Link down on interface 2. Admin state: 1. Operational state: 2

2 Requisitos del sistema

Compatibilidad con archivos grandes

Áú»¢¶Ä²© tiene "soporte de archivos grandes" para archivos de captura SNMP. El tama?o m¨¢ximo de archivo que Áú»¢¶Ä²© puede leer es 2^63 (8 EiB). Tenga en cuenta que el sistema de archivos puede imponer un l¨ªmite inferior en el tama?o del archivo.

Rotaci¨®n de registros

Áú»¢¶Ä²© no proporciona ning¨²n sistema de rotaci¨®n de registros; eso debe manejarse por el usuario La rotaci¨®n de registros primero debe cambiar el nombre del archivo antiguo y solo luego elim¨ªnelo para que no se pierdan trampas:

  1. Áú»¢¶Ä²© abre el archivo de captura en la ¨²ltima ubicaci¨®n conocida y va a paso 3
  2. Áú»¢¶Ä²© verifica si el archivo actualmente abierto ha sido rotado por comparando el n¨²mero de inodo con el n¨²mero de inodo del archivo trap definido. Si no hay ning¨²n archivo abierto, Áú»¢¶Ä²© restablece la ¨²ltima ubicaci¨®n y va al paso 1.
  3. Áú»¢¶Ä²© lee los datos del archivo abierto actualmente y establece el nueva ubicacion.
  4. Los nuevos datos se analizan. Si este fue el archivo girado, el archivo es cierra y vuelve al paso 2.
  5. Si no hubo datos nuevos, Áú»¢¶Ä²© duerme durante 1 segundo y vuelve al paso 2.
Sistema de archivos

Debido a la implementaci¨®n del archivo trampa, Áú»¢¶Ä²© necesita que el sistema de archivos soportar inodos para diferenciar archivos (la informaci¨®n es adquirida por un llamada stat()).

Ejemplos de configuraci¨®n utilizando diferentes versiones del protocolo SNMP

Este ejemplo utiliza snmptrapd y un script receptor Bash para pasar capturas al servidor Áú»¢¶Ä²©.

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô:

  1. Configure Áú»¢¶Ä²© para iniciar el Capturador SNMP y configure el archivo de captura. Agregar a zabbix_server.conf:
StartSNMPTrapper=1
       SNMPTrapperFile=/tmp/my_zabbix_traps.tmp
  1. Descargue el script Bash en /usr/sbin/zabbix_trap_handler.sh:
curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh

Si es necesario, ajuste la variable ZABBIX_TRAPS_FILE en el script. Para utilizar el valor predeterminado, cree el directorio principal primero:

mkdir -p /var/lib/zabbix/snmptraps
  1. Agregue lo siguiente a snmtrapd.conf (consulte el de trabajo)
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh
  1. Cree una m¨¦trica SNMP TEST:

    IP de la interfaz SNMP del equipo: 127.0.0.1
    Clave: snmptrap["linkup"]
    Formato de hora de registro: yyyyMMdd.hhmmss

  2. A continuaci¨®n configuraremos snmptrapd para la versi¨®n del protocolo SNMP elegida y enviaremos capturas de prueba utilizando la utilidad snmptrap.

SNMPv1, SNMPv2

Los protocolos SNMPv1 y SNMPv2 se basan en la autenticaci¨®n de "cadena comunitaria". En el siguiente ejemplo usaremos "secret" como cadena de comunidad. Debe establecerse en el mismo valor en los remitentes de capturas SNMP.

Tenga en cuenta que, si bien todav¨ªa se utiliza ampliamente en entornos de producci¨®n, SNMPv2 no ofrece ning¨²n cifrado ni autenticaci¨®n de remitente real. Los datos se env¨ªan como texto plano y por lo tanto estas versiones de protocolo solo deben usarse en entornos seguros, como redes privadas, y nunca debe utilizarse en ninguna red p¨²blica o de terceros.

La versi¨®n 1 de SNMP no se utiliza actualmente porque no admite contadores de 64 bits y se considera un protocolo obsoleto.

Para habilitar la aceptaci¨®n de capturas SNMPv1 o SNMPv2, debe agregar la siguiente l¨ªnea a snmptrapd.conf. Reemplace "secret" con la cadena de comunidad SNMP configurada en los remitentes de capturas SNMP:

authCommunity log,execute,net secret

A continuaci¨®n podemos enviar una captura de prueba usando snmptrap. Usaremos el OID de "enlace" com¨²n en este ejemplo:

snmptrap -v 2c -c secret localhost 0 linkUp.0
SNMPv3

SNMPv3 aborda los problemas de seguridad de SNMPv1/v2 y proporciona autenticaci¨®n y cifrado. Puede utilizar MD5 o varios m¨¦todos de autenticaci¨®n SHA y DES/varios AES como cifrado.

Para habilitar la aceptaci¨®n de SNMPv3, agregue las siguientes l¨ªneas a snmptrapd.conf:

createUser -e 0x8000000001020304 traptest SHA mypassword AES
       authuser log,execute traptest

Tenga en cuenta la palabra clave "execute" que permite ejecutar scripts para este modelo de seguridad de usuario.

snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0

Si desea utilizar m¨¦todos de cifrado seguros como AES192 o AES256, utilice net-snmp a partir de la versi¨®n 5.8. Quiz¨¢s tenga que recompilarlo con la opci¨®nconfigure : --enable-blumenthal-aes. Las versiones anteriores de net-snmp no son compatibles con AES192/AES256. V¨¦ase tambi¨¦n: http://www.net-snmp.org/wiki/index.php/Strong_Authentication_or_Encryption

³Õ±ð°ù¾±´Ú¾±³¦²¹³¦¾±¨®²Ô

En ambos ejemplos ver¨¢ l¨ªneas similares en su /var/lib/zabbix/snmptraps/snmptraps.log:

20220805.102235 ZBXTRAP 127.0.0.1
       UDP: [127.0.0.1]:35736->[127.0.0.1]:162
       DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
       SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0

El valor de la m¨¦trica en Áú»¢¶Ä²© ser¨¢:

2022-08-05 10:22:35 2022-08-05 10:22:33
       
       20220805.102233 UDP: [127.0.0.1]:35736->[127.0.0.1]:162
       DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
       SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0

Ver tambi¨¦n