CISCO-ERR-DISABLE-MIB 트랩이 Icinga의 인터페이스 및 VLAN 정보를 표시하지 않는 이유는 무엇입니까?

CISCO-ERR-DISABLE-MIB 트랩이 Icinga의 인터페이스 및 VLAN 정보를 표시하지 않는 이유는 무엇입니까?

저는 cisco와 icinga(nagios, thruk라고도 함)가 포함된 모니터링 서버를 가지고 있습니다. 시스코로부터 트랩을 받아 아이싱가로 보여주고 싶습니다. 하지만 오류가 있는 트랩에 대한 인터페이스와 VLAN을 볼 수 없습니다.

CISCO-ERR-DISABLE-MIB.my를 포함하여 cisco에서 mibs를 다운로드했습니다. 그런 다음 다음 명령을 사용하여 snmptt로 변환했습니다.

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

다음 구성이 생성되었습니다(mib의 절대 경로를 ...로 바꾸고 변수 값을 ...로 바꿨습니다).

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

두 가지 트랩이 있습니다. cErrDisableInterfaceEventRev1에만 관심이 있고 더 이상 사용되지 않는 cErrDisableInterfaceEvent에는 관심이 없습니다.

이것은 테스트 errdisable 이벤트를 생성하는 데 사용하는 send-errdisable.sh입니다.

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

이제 errdisable 이벤트를 생성하면 errdisable 서비스에 대한 icinga 플러그인 출력에 다음 텍스트가 표시됩니다. cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:udld
그러나 인터페이스와 VLAN은 다음과 같이 있을 것으로 예상합니다.
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

왜 표시되지 않습니까? 그리고 그것을 고치는 방법은 무엇입니까?

답변1

나는 정확하게 몰라그것은 표시되지 않습니다. 나는 이것이 net_snmp_perl 변환기에 의해 수행된 문제라고 생각합니다.

이 사건의 OID 이벤트 는 와 1.3.6.1.4.1.9.9.548.1.3.1.1.2.2.02가지로 구성됩니다 .1.3.6.1.4.1.9.9.548.1.3.1.1.2.2.0

net_snmp_perl은 OID 이벤트의 첫 번째 부분을 해결한 후 이벤트 OID(".2.0")의 후행 부분을 생략한 것 같습니다(이 경우 cErrDisableIfStatusCause로 해결됨).

하지만 해결 방법을 찾았습니다.

수행원이것기사에서 원래 값을 복제하기 위해 EXEC 줄에 무엇을 쓸 수 있는지 알아냈습니다.

생성된 snmptt.conf를 열고 교체합니다.

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 "

에게

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"은 구성 파일의 이벤트 이름입니다. 이 경우 "cErrDisableInterfaceEventRev1"
"$+1"은 첫 번째 변수 이름과 해당 값입니다. 이 경우 "cErrDisableIfStatusCause.2.0:udld"

이제 테스트 트랩을 보내는 것은 icinga에 다음과 같이 표시됩니다:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

그리고 그것은 우리가 원했던 것입니다. 이제 send-errdisable.sh에서 .2.0을 예를 들어 .3.1로 변경하면 icinga에도 그에 따라 표시됩니다.

관련 정보