저는 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.0
2가지로 구성됩니다 .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에도 그에 따라 표시됩니다.