Заставляем ZABBIX ловить SNMP трапы |
Сегодня расскажу о том, как настроить Zabbix для реакции на важные для нас snmp трапы. Если вы не знакомы с протоколом SNMP, с чем его едят можно узнать здесь. Что такое Zabbix можно почитать здесь. Ну а в двух словах, SNMP протокол служит для мониторинга и управления устройствами по сети. А Zabbix — программный комплекс для сетевого мониторинга. Первый вариант удобен для мониторинга не критичных, постоянно меняющихся параметров, например, загрузка сетевых интерфейсов, температура и т.п. Для этого достаточно периодически, например раз в минуту, запрашивать эти параметры у хоста. А вот запрашивать каждую минуту состояние интерфейса, или BGP сессии, которая пожет упасть раз в месяц — решение не рациональное. В данной ситуации нам помогут SNMP трапы. Будем считать что Zabbix у вас установлен. Итак, приступаем к настройке. Настройка SNMP на Cisco 2811На циске выполняем следующее:
где: или просто: snmp-server enable traps — включаются все доступные трапы. Настраиваем SNMP сервер.У меня, в качестве SNMP сервера выступает машина с CentOS 5.4, на которой установлен Zabbix.Сначала необходимо установить следующий пакет: net-snmp-utils из него нам понадобится snmptrapd и snmpwalk. Создаём конфиг /etc/snmp/snmptrapd.conf следующего содержания: ignoreauthfailure noСамая важная здесь строчка: traphandle default /bin/bash /usr/local/bin/snmptrap.sh, она указывает что делать если пришел SNMP трап. В нашем случае запускается скрипт snmptrap.sh. Про остальные строки конфига подробно можно почитать в мане: man snmptrapd.confТеперь из папки с исходниками Zabbix: /tmp/zabbix-1.8.1/misc/snmptrap/ копируем скриптик snmptrap.sh в /usr/local/bin/ Я немного подправил скрипт, т.к. предлагаемый меня не устраивал: #!/bin/bashУ меня с трапом не приходил hostname, поэтому я получаю его самостоятельно этой строчкой: hostname=`snmpwalk -c public $ip system.sysName.0 2> /dev/null|cut -d"=" -f2|cut -d":" -f2, для её работы нужна утилита snmpwalk (входит в установленный нами выше пакет), и дополнительная строчка в конфиге cisco: snmp-server community NewCommunity Запускаем snmptrapd.
Смотрим, нет ли ошибок в /var/log/snmptrap.log, если нет, идём на циску и пытаемся инициировать событие, например погасить интерфейс. Смотрим, что появилось в /var/log/snmptrap.log и snmptrapmy.log. Настройка ZabbixВ заббиксе создайте новый хост с ip-адресом 0.0.0.0 и с именем snmptraps. Добавьте его в любую группу, например Zabbix Servers.Теперь создайте Item с такими параметрами: Description: GetTraps, Type: Zabbix trapper, Key: snmptraps, Type of information: Text, Сохраните. В разделе Item, хоста snmptraps, перед столбцом Description, появится столбец Log и маленькая иконка. Щёлкните на ней, и выберите «Create Log Trigger». Создайте триггер с такими параметрами: Description: LinkStatus, Item: GetTrap, Expression: 10.1.1.5 linkDown Vlan10 (не забудьте нажать кнопочку add) Severity: по_вкусу Сохраните. Теперь в Configuration->Actions создайте новый экшен на только что созданный триггер. Настройте его так: Всё, можно проверять, погасите на циске интерфейс, и через некоторое время должен сработать ваш только что настроенный экшен. Чтобы добавить реакцию zabbix на любой другой трап, воспроизведите это событие на хосте, посмотрите, что запишется в snmptrapmy.log на SNMP сервере, и укажите полученный OID в триггере zabbix. Как только zabix получит трап (который ему передаёт скрипт snmptrap.sh), он проверяет, есть ли в полученной строке указанный в триггере шаблон, и, если есть, то триггер срабатывает. Сработанный триггер вызывает привязанный к нему Action, который отправляет уведомление администратору о случившемся событии. Если не работает:Если трапы на SNMP сервере не логируются, выяснить в чём проблема можно отправив трапы вручную, с помощью программы snmptrap: на другом компьютере, установите программу snmptrap и выполните следующее: snmptrap -v1 -cMyCommunity IP_SNMP_SERVERA .1.3.6.1.6.3.1.1.5.2 0 0 "" "" .1.3.6.1.4.1 s "HelloWinn"Отправленный трап должен записаться в /var/log/snmptrap.log на SNMP сервере. Если его там нет, проверьте, запущен ли snmptrapd и как там дела с правилам вашего файервола и пингуется ли ваш SNMP сервер :-)
Более подробно про настройку Zabbix можно почитать здесь. Автор Bordac, http://bloggik.net/ - Статьи и программы для Админа.
UPD: для того чтобы, правильно светился hostname: из файла snptrap.sh 127.0.0.1 localhost 4) теперь можно принимать трапы для каждого устройства отдельно, создавая их в заббихе в разделе HOSTS. Спасибо kbish за дополнения. |