¿Por qué la trampa CISCO-ERR-DISABLE-MIB no muestra información de interfaz y vlan en Icinga?

¿Por qué la trampa CISCO-ERR-DISABLE-MIB no muestra información de interfaz y vlan en Icinga?

Tengo un cisco y un servidor de monitoreo con icinga (también conocido como nagios, thruk). Quiero recibir trampas de cisco y mostrarlas en icinga. Pero no puedo ver la interfaz ni la VLAN de la trampa errdisable.

He descargado mibs de Cisco, incluido CISCO-ERR-DISABLE-MIB.my. Luego lo convertí para snmptt con este comando:

snmpttconvertmib --in=CISCO-ERR-DISABLE-MIB.my --out=snmptt.conf --exec='/bin/bash /usr/local/bin/trap/submit_check_result $r '"errdisable 2" -net_snmp_perl --format=4

lo que produjo la siguiente configuración (reemplacé la ruta absoluta a mib con... y los valores variables con...):

#
#
#
#
MIB: CISCO-ERR-DISABLE-MIB (file:/.../CISCO-ERR-DISABLE-MIB.my) converted on Wed Sep  8 16:49:53 2021 using snmpttconvertmib v1.4.2
#
#
#
EVENT cErrDisableInterfaceEvent .1.3.6.1.4.1.9.9.548.0.1.1 "Status Events" Normal
FORMAT cErrDisableInterfaceEvent - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "cErrDisableInterfaceEvent - cErrDisableIfStatusCause:$1 "
SDESC
The cErrDisableInterfaceEvent is generated when an interface
or {interface, vlan} is error-disabled by the feature
specified in cErrDisableIfStatusCause.
cErrDisableInterfaceEvent is deprecated and replaced by 
cErrDisableInterfaceEventRev1.
Variables:
  1: cErrDisableIfStatusCause
     Syntax="INTEGER"
       1: udld
       ...
       9: portSecurityViolation
     Descr="This object specifies the feature/event that caused the
        {interface, vlan} (or the entire interface) to be
        error-disabled."
EDESC
#
#
#
EVENT cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 "Status Events" Normal
FORMAT cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "$N - $+1 "
SDESC
The cErrDisableInterfaceEventRev1 is generated when an
interface or {interface, vlan} is error-disabled by the 
feature specified in cErrDisableIfStatusCause.
cErrDisableInterfaceEventRev1 deprecates 
cErrDisableInterfaceEvent to make it RFC 2578 compliant. 
According to section 8.5 of RFC 2578, the next
to last sub-identifier in the name of any newly-defined
notification must have the value zero.
Variables:
  1: cErrDisableIfStatusCause
     Syntax="INTEGER"
       1: udld
       ...
       9: portSecurityViolation
     Descr="This object specifies the feature/event that caused the
        {interface, vlan} (or the entire interface) to be
        error-disabled."
EDESC

Hay dos trampas, solo estoy interesado en cErrDisableInterfaceEventRev1, pero no en el obsoleto cErrDisableInterfaceEvent.

Este es mi send-errdisable.sh que uso para generar un evento de prueba errdisable:

TO_HOST=icinga.example.com
community=abcabc

snmptrap -m ALL -v 2c -c $community $TO_HOST '' CISCO-ERR-DISABLE-MIB::cErrDisableInterfaceEventRev1 \
CISCO-ERR-DISABLE-MIB::cErrDisableIfStatusCause.2.0 i 1 \
2>/dev/null

Ahora, cuando genero un evento errdisable, en la salida del complemento icinga para el servicio errdisable aparece el siguiente texto: cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:udld
pero espero que la interfaz y la VLAN estén ahí, así:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

¿Por qué no se muestra? ¿Y cómo solucionarlo?

Respuesta1

no sé exactamentepor quéno se muestra. Sospecho que el convertidor net_snmp_perl hizo algo mal.

El evento OID 1.3.6.1.4.1.9.9.548.1.3.1.1.2.2.0de este caso consta de dos cosas: 1.3.6.1.4.1.9.9.548.1.3.1.1.2y .2.0.

Parece que net_snmp_perl omite la parte final del evento OID ("".2.0") después de resolver la primera parte del evento OID (en este caso se resuelve en cErrDisableIfStatusCause).

Pero he encontrado una solución para solucionarlo.

Siguienteesteartículo, descubrí lo que podría escribir en la línea EXEC para replicar los valores originales.

Abra el snmptt.conf generado y reemplácelo

EVENT cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 "Status Events" Normal
FORMAT cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1 "

a

EVENT cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 "Status Events" Normal
FORMAT Looks unimportant what you write here
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "$N - $+1 "

"$N" es el nombre del evento del archivo de configuración, en este caso "cErrDisableInterfaceEventRev1"
"$+1" es el nombre de la primera variable y su valor, en este caso "cErrDisableIfStatusCause.2.0:udld"

Ahora el envío de una trampa de prueba se muestra en icinga como este:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

Y es lo que queríamos. Ahora, cambiar .2.0 a, por ejemplo, .3.1 en send-errdisable.sh también se muestra correspondientemente en icinga.

información relacionada