Получение SNMP трапов является противоположностью к запросам к SNMP устройствам.
В этом случае информация отправляется с SNMP устройства и собирается или “ловится” Zabbix'ом.
Обычно трапы отправляются на некоторые условия и агент подключения на 162 порт сервера (в отличии от 161 порта на стороне агента, который используется для запросов). Использование трапов может обнаружить некоторые кратковременные проблемы, которые происходят между интервалами опроса и могут быть пропущены при запросах данных.
Получение SNMP трапов в Zabbix рассчитано на работу с snmptrapd и одним из встроенных механизмов для передачи трапов в Zabbix - либо perl скрипт, либо SNMPTT.
Последовательность действий при получении трапа:
Настройка соответствующих полей в веб-интерфейсе является специфичной для этого типа элементов данных:
В Настройка → Узлы сети, в поле Интерфейсы узла сети задайте SNMP интерфейс с корректными IP и DNS адресами. Адрес из каждого полученного трапа сравнивается с IP и DNS адресами всех SNMP интерфейсов для поиска соответствующих узлов сети.
В поле Ключ используйте один из ключей SNMP трапов:
Ключ | ||
---|---|---|
Описание | Возвращаемое значение | Комментарии |
snmptrap[регулярное выражение] | ||
Ловит все SNMP трапы с соответствующего адреса, которые совпадают с регулярным выражением | SNMP трап | Этот элемент данных можно задать только на SNMP устройства. Этот элемент данных поддерживается начиная с версии 2.0.0. Обратите внимание: Начиная с Zabbix 2.0.5, в параметре этого ключа элемента данных поддерживаются пользовательские макросы и глобальные регулярные выражения. |
snmptrap.fallback | ||
Ловит все SNMP трапы с соответствующего адреса, которые не совпадают ни с одним из элементов данных snmptrap[] для этого интерфейса | SNMP трап | Этот элемент данных можно задать только на SNMP устройства. Этот элемент данных поддерживается начиная с версии 2.0.0. |
Установите Тип информации равным 'Журнал (лог)' для обработки штампов времени. Обратите внимание, что другие форматы, такие как 'Числовой' также приемлемы, но для этого может потребоваться пользовательский обработчик трапов.
Для чтения трапов, Zabbix сервер или прокси должны быть настроены для запуска процесса SNMP траппера, с указанием файла с трапами, который пишется с помощью SNMPTT или с помощью получателя трапов Perl. Чтобы это сделать, измените файл конфигурации (zabbix_server.conf или zabbix_proxy.conf):
Для начала, snmptrapd должен быть настроен для использования SNMPTT.
При настройке SNMPTT на получение трапов, настройке SNMPTT на журналирование этих трапов:
Теперь отформатируйте трапы, чтобы они распознавались Zabbix'ом (измените snmptt.conf):
Требования: Perl, Net-SNMP скомпилированный с --enable-embedded-perl (компилируется по умолчанию начиная с Net-SNMP 5.4)
Получатель трапов Perl (ищите в misc/snmptrap/zabbix_trap_receiver.pl) может быть использован для передачи трапов в Zabbix сервер напрямую с snmptrapd. Для его настройки:
Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
Все пользовательские получатели трапов perl и конфигурация SNMPTT трапов должны быть отформатированы следующим образом:
[штамп времени] [трап, часть 1] ZBXTRAP [адрес] [трап, часть 2]
где
Обратите внимание, что “ZBXTRAP” и “[адрес]” при обработке отрезаются. Если трап форматируется инача, Zabbix может разобрать эти трапы неожиданным образом.
Пример строки трапа из файла:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
Это будет результатом отформатированного трапа для SNMP интерфейса с IP=192.168.1.1:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - Link down on interface 2. Admin state: 1. Operational state: 2
Zabbix не предоставляет какую-нибудь систему ротации журналов - поэтому это должно быть обработано пользователем. Ротация журналов должна сначала переименовать старый файл и только после этого удалить его, чтобы никакие трапы не пропали:
Из-за реализации файла с трапами, Zabbix'у требуется файловая система с поддержкой inode для того чтобы различать файлы (эта информация берется из вызова stat()).
Этот пример использует snmptrapd + SNMPTT для передачи трапов Zabbix серверу. Установка:
В результате: