Warum zeigt der CISCO-ERR-DISABLE-MIB-Trap keine Schnittstellen- und VLAN-Informationen in Icinga an?

Warum zeigt der CISCO-ERR-DISABLE-MIB-Trap keine Schnittstellen- und VLAN-Informationen in Icinga an?

Ich habe einen Cisco und einen Überwachungsserver mit Icinga (auch bekannt als Nagios, Thruk). Ich möchte Traps von Cisco empfangen und sie in Icinga anzeigen. Aber ich kann die Schnittstelle und das VLAN für den Errdisable-Trap nicht sehen.

Ich habe MIBs von Cisco heruntergeladen, einschließlich CISCO-ERR-DISABLE-MIB.my. Dann habe ich es mit diesem Befehl für SNMPTT konvertiert:

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

was die folgende Konfiguration erzeugte (ich habe den absoluten Pfad zur MIB durch ... und die Variablenwerte durch ... ersetzt):

#
#
#
#
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

Es gibt zwei Fallen, mich interessiert nur cErrDisableInterfaceEventRev1, nicht aber das veraltete cErrDisableInterfaceEvent.

Dies ist meine send-errdisable.sh, die ich verwende, um ein Test-Errdisable-Ereignis zu generieren:

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

Wenn ich jetzt ein Errdisable-Ereignis generiere, erhalte ich in der Icinga-Plugin-Ausgabe für den Errdisable-Dienst den folgenden Text: cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:udld
Ich erwarte jedoch, dass die Schnittstelle und das VLAN dort angegeben sind, und zwar so:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

Warum wird es nicht angezeigt? Und wie kann ich das beheben?

Antwort1

das weiß ich nicht genauWarumes wird nicht angezeigt. Ich vermute, dass beim net_snmp_perl-Konverter ein Fehler aufgetreten ist.

Das OID-Ereignis 1.3.6.1.4.1.9.9.548.1.3.1.1.2.2.0besteht in diesem Fall aus zwei Dingen: 1.3.6.1.4.1.9.9.548.1.3.1.1.2und .2.0.

Es scheint, dass net_snmp_perl den nachfolgenden Teil der Ereignis-OID („.2.0“) weglässt, nachdem es den ersten Teil des OID-Ereignisses aufgelöst hat (in diesem Fall wird es in „cErrDisableIfStatusCause“ aufgelöst).

Aber ich habe eine Lösung zur Behebung gefunden.

GefolgtDasArtikel habe ich herausgefunden, was ich in die EXEC-Zeile schreiben könnte, um die Originalwerte zu replizieren.

Öffnen Sie die generierte snmptt.conf und ersetzen Sie

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 "

Zu

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“ ist der Ereignisname aus der Konfigurationsdatei, in diesem Fall „cErrDisableInterfaceEventRev1“
„$+1“ ist der erste Variablenname und sein Wert, in diesem Fall „cErrDisableIfStatusCause.2.0:udld“

Das Senden eines Test-Traps wird jetzt in Icinga wie folgt angezeigt:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

Und es ist, was wir wollten. Wenn wir nun die .2.0 in send-errdisable.sh beispielsweise in .3.1 ändern, wird dies auch in Icinga entsprechend angezeigt.

verwandte Informationen