Рейтинг:0

Почему ловушка CISCO-ERR-DISABLE-MIB не показывает информацию об интерфейсе и vlan в Icinga?

флаг br

У меня есть cisco и сервер мониторинга с icinga (он же nagios, thruk). Я хочу получать ловушки от cisco и показывать их в icinga.Но я не могу увидеть интерфейс и vlan для errdisable trap.

Я загрузил mibs от cisco, включая CISCO-ERR-DISABLE-MIB.my. Затем я преобразовал его для 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 - -формат=4

который произвел следующую конфигурацию (я заменил абсолютный путь к mib на ... и значения переменных на ...):

#
#
#
#
MIB: CISCO-ERR-DISABLE-MIB (файл:/.../CISCO-ERR-DISABLE-MIB.my), преобразованный в среду, 8 сентября, 16:49:53 2021 г., с использованием snmpttconvertmib v1.4.2
#
#
#
СОБЫТИЕ cErrDisableInterfaceEvent .1.3.6.1.4.1.9.9.548.0.1.1 "Состояние событий" Обычный
ФОРМАТ cErrDisableInterfaceEvent - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "cErrDisableInterfaceEvent - cErrDisableIfStatusCause:$1"
СДЕСК
cErrDisableInterfaceEvent генерируется, когда интерфейс
или {interface, vlan} отключен функцией по ошибке
указанный в cErrDisableIfStatusCause.
cErrDisableInterfaceEvent устарел и заменен на 
cErrDisableInterfaceEventRev1.
Переменные:
  1: cErrDisableIfStatusCause
     Синтаксис = "ЦЕЛОЕ ЧИСЛО"
       1: удлд
       ...
       9: портсекуритивиолатион
     Descr="Этот объект определяет функцию/событие, вызвавшее
        {interface, vlan} (или весь интерфейс) быть
        ошибка-отключено."
ЭДЕСК
#
#
#
СОБЫТИЕ cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 «Состояние событий» Обычный
ФОРМАТ cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "$N - $+1"
СДЕСК
cErrDisableInterfaceEventRev1 генерируется, когда
интерфейс или {interface, vlan} отключен по ошибке 
функция, указанная в cErrDisableIfStatusCause.
cErrDisableInterfaceEventRev1 устарел 
cErrDisableInterfaceEvent, чтобы сделать его совместимым с RFC 2578. 
Согласно разделу 8.5 RFC 2578, следующий
до последнего субидентификатора в имени любого вновь определенного
уведомление должно иметь нулевое значение.
Переменные:
  1: cErrDisableIfStatusCause
     Синтаксис = "ЦЕЛОЕ ЧИСЛО"
       1: удлд
       ...
       9: портсекуритивиолатион
     Descr="Этот объект определяет функцию/событие, вызвавшее
        {interface, vlan} (или весь интерфейс) быть
        ошибка-отключено."
ЭДЕСК

Есть две ловушки, меня интересует только cErrDisableInterfaceEventRev1, но не deprecated cErrDisableInterfaceEvent.

Это мой send-errdisable.sh, который я использую для создания тестового события errdisable:

TO_HOST=icinga.example.com
сообщество=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/ноль

Теперь, когда я генерирую событие errdisable, в выходных данных плагина icinga для службы errdisable я получаю следующий текст: cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:udld
но я ожидаю, что интерфейс и vlan будут там, например:
cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause.2.0:udld

Почему не показано? И как это исправить?

Рейтинг:0
флаг br

не знаю точно Почему это не показано. Я подозреваю, что конвертер net_snmp_perl сделал что-то не так.

Событие OID 1.3.6.1.4.1.9.9.548.1.3.1.1.2.2.0 этого случая состоит из двух вещей: 1.3.6.1.4.1.9.9.548.1.3.1.1.2 и .2.0.

Похоже, что net_snmp_perl опускает завершающую часть OID события ("".2.0") после разрешения первой части события OID (в данном случае оно преобразуется в cErrDisableIfStatusCause).

Но я нашел решение для исправления.

Следующий это статьи я узнал, что я мог бы написать в строке EXEC, чтобы воспроизвести исходные значения.

Откройте сгенерированный snmptt.conf и замените

СОБЫТИЕ cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 «Состояние событий» Обычный
ФОРМАТ cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1 
EXEC /bin/bash /usr/local/bin/trap/submit_check_result $r errdisable 2 "cErrDisableInterfaceEventRev1 - cErrDisableIfStatusCause:$1"

к

СОБЫТИЕ cErrDisableInterfaceEventRev1 .1.3.6.1.4.1.9.9.548.0.2 «Состояние событий» Обычный
ФОРМАТ Выглядит неважно, что вы здесь пишете
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

И это то, что мы хотели. Теперь изменение .2.0, например, на .3.1 в send-errdisable.sh также соответственно отображается в icinga.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.