Получение SNMP трапов является полной противоположностью запросам к SNMP устройствам.
В этом случае информация отправляется с SNMP устройства и собирается или "ловится" Zabbix'ом.
Обычно трапы отправляются при наступлении некоторых условий и агент подключается на 162 порт сервера (в отличии от 161 порта на стороне агента, который используется для запросов). Использование трапов может помочь обнаружить некоторые кратковременные проблемы, которые происходят между интервалами опроса и могут быть пропущены при запросах данных.
Получение SNMP трапов в Zabbix рассчитано на работу с snmptrapd и с одним из встроенных механизмов передачи трапов в Zabbix - либо perl скрипт, либо SNMPTT.
Последовательность действий при получении трапа:
Настройка следующих полей в веб-интерфейсе является специфичной для этого типа элементов данных:
В Настройка → Узлы сети, в поле Интерфейсы узла сети добавьте SNMP интерфейс с корректными IP или DNS адресами. Адрес из каждого полученного трапа сравнивается с IP и DNS адресами всех SNMP интерфейсов для поиска соответствующих узлов сети.
В поле Ключ используйте один из ключей SNMP трапов:
Ключ | ||
---|---|---|
Описание | Возвращаемое значение | Комментарии |
snmptrap[регулярное выражение] | ||
Отлов всех SNMP трапов , который совпадают с регулярным выражением, указанном в поле регулярное выражение. Если регулярное выражение не указано, принимаются все трапы. | SNMP трап | Этот элемент данных можно привязать только к SNMP интерфейсам. Элемент данных поддерживается начиная с Zabbix 2.0.0. Обратите внимание: Начиная с Zabbix 2.0.5, в параметре этого ключа элемента данных поддерживаются пользовательские макросы и глобальные регулярные выражения. |
snmptrap.fallback | ||
Отлов всех SNMP трапы, которые не совпадают ни с одним из элементов данных snmptrap[] для этого интерфейса. | SNMP трап | Этот элемент данных можно привязать только к SNMP интерфейсам. Элемент данных поддерживается начиная с Zabbix 2.0.0. |
Многострочное совпадение по регулярному выражению в данный момент времени не поддерживается.
Укажите Тип информации равным 'Журнал (лог)' для обработки штампов времени. Обратите внимание, что другие форматы, такие как 'Числовой' также приемлемы, но для этого может потребоваться пользовательский обработчик трапов.
Для того чтобы мониторинг SNMP трапов работал, он должен быть сначала корректно настроен.
Для чтения трапов, Zabbix сервер или прокси должны быть настроены на запуск процесса SNMP траппера и должны знать абсолютный путь к файлу с трапами, который заполняется при помощи SNMPTT или получателя трапов Perl. Чтобы это сделать, измените файл конфигурации (zabbix_server.conf или zabbix_proxy.conf):
Если используется systemd параметр PrivateTmp, этот файл вряд ли заработает в /tmp.
Для начала, snmptrapd необходимо настроить на использование SNMPTT.
Для лучшей производительности, SNMPTT необходимо сконфигурировать демоном с использованием snmptthandler-embedded для передачи ему трапов. Смотрите инструкции по настройке SNMPTT на его сайте:
http://snmptt.sourceforge.net/docs/snmptt.shtml
При конфигурировании SNMPTT на получение трапов, настройте SNMPTT на журналирование этих трапов:
Теперь отформатируйте трапы, чтобы они распознавались Zabbix'ом (измените snmptt.conf):
Не используйте неизвестные трапы - Zabbix может их не распознать. Неизвестные трапы могут быть обработаны, если задать общее событие в snmptt.conf:
EVENT general .* "General event" Normal
Требования: Perl, Net-SNMP скомпилированный с --enable-embedded-perl (компилируется по умолчанию начиная с Net-SNMP 5.4)
Получатель трапов Perl (ищите в misc/snmptrap/zabbix_trap_receiver.pl) можно использовать для передачи трапов в Zabbix сервер напрямую с snmptrapd. Для его настройки:
Если имя скрипта не заключено в кавычки, snmptrapd откажется запускаться с сообщениями наподобие этих:
Все пользовательские получатели трапов 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 имеется "Поддержка больших файлов" для файлов SNMP трапов. Максимальный размер файла, который Zabbix может прочитать, это 2^63 (8 Эбайт). Обратите внимание, что файловая система может иметь меньшее ограничение на максимальный размер файлов.
Zabbix не предоставляет какую-либо систему ротации журналов - должно быть обработано пользователем. Ротация журналов должна начинаться с переименовывания старого файла и только после этого удалять его, чтобы никакие трапы не пропали:
Из-за реализации файла с трапами, Zabbix'у требуется файловая система с поддержкой inode для того чтобы различать файлы (эта информация берется из вызова stat()).
Этот пример использует snmptrapd + SNMPTT для передачи трапов Zabbix серверу. Установка:
В результате:
В этом примере используется SNMPTT как traphandle. Для лучшей производительности на продуктивных системах используйте встроенный Perl для передачи трапов от snmptrapd к SNMPTT или напрямую Zabbix'у.