Работа с SNMP в Zabbix на примере мониторинга температуры

новый zabbix

Сегодня мы попробуем совметить приятное с полезным: понять, как работает с SNMP, разобраться с новой железкой и организовать мониторинг температуры в серверной.

Итак, железка: контроллер температуры Sensatronics E4 — работает с 4 датчиками, доступен по Ethernet. Текущая температура отображается на -странице. Для того, чтобы получать более полные отчёты и графики, компания-производитель предлагает купить специальный софт. Мы пойдём другим путём © и организуем мониторинг температуры уже имеющимися средствами Zabbix.

Сразу оговорюсь, что этот пост ни разу не рекламный и Сенсатроникс мне ничего не заплатил. А для работы можно использовать и другие термодатчики — как сетевые (работающие по SNMP), так и поключаемые к компьютеру (по serial или USB интерфейсам). Но в данный момент речь пойдёт именно о SNMP-мониторинге. Интересно, что в разделе Download есть плагины для Big Brother, MRTG и Nagios, так что выкручиваться придётся своими силами.

Прежде всего, необходимо убедиться, что zabbix сервер собран с поддержкой SNMP. Что-то вроде этого:

./configure --with-mysql --enable-server --with-libcurl --with-net-snmp

Для успешной сборки в системе должны быть установлены пакеты net-snmp и net-snmp-devel. Признаком того, что zabbix сервер собрался с поддержкой SNMP, служат такие сообщения в логе при старте:

6070:20081126:115303 Starting zabbix_server. ZABBIX 1.6.1.
6070:20081126:115303 **** Enabled features ****
6070:20081126:115303 SNMP monitoring:        YES

Теперь можно приступить. Вначале устанавливаем сам контроллер, настраиваем сеть, подключаем датчики и убеждаемся, что он работает: в web-интерфейсе должна отображаться текущая температура. Далее, вводим его в SNMP-community. Я намеренно не описываю подробно эти действия потому, что они, во-первых, делаются по инструкции, а во-вторых, на разных устройствах выполняются по-разному.

Теперь заводим в интерфейсе новый хост:

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

Теперь создаём айтемы (параметры мониторинга). Для этого воспользуемся базой SNMP MIBs с сайта производителя. Каждому датчику термоконтроллера соответсвует один айтем, поэтому в нашем случае заводим 4 айтема.

Обратите внимание, что в качестве типа параметра выбран “SNMPv1 agent”, и прописано необходимое SNMP-comunity.

Убеждаемся, что мониторинг заработал: данные должны собираться и график строиться:

Теперь займёмся сигнализацией. Для этого создаём триггеры:

Поскольку мы можем делать несколько триггеров разной степени серьёзности, настроим повышение температуры выше 20 градусов на серьёзность Warning, выше 25 — Average, выше 30 — High и выше 35 — Disaster. Можно сделать ещё один порог срабатывания — 60 градусов. Это будет означать, что в серверной начался пожар или извержение вулкана :-). Такая градация позволит гибко управлять рассылкой сообщений различным пользователям и на разные транспорты (почта, SMS). Получив на почту сообщение, что температура стала выше 20 градусов, можно неторопясь сходить посмотреть, что за раззява оставил дверь серверной нараспашку, а приняв SMS о температуре выше 35 — уже нестись стрелой, на пути звоня техникам по кондиционерам!

Получается, что на каждый датчик (айтем) будет ещё несколько триггеров! Казалось бы, это уже все? Ан нет! Мы же хотим сделать хороший мониторинг? А что случится, если выйдет из строя датчик, окислится его контакт или оборвётся провод? В устройствах Sensatronics в этом случае будет отображаться температура -99 градусов. Следовательно, ни один из наших триггеров не сработает и все будут считать, что всё в порядке! Значит, нужно сделать ещё один триггер с серьёзностью Disaster, который, например, будет срабатывать, например, при уменьшении температуры ниже -10.

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

Вот собственно, и всё. Теперь можно включать наш Zabbix Host в необходимые группы оповещения, прописывать Actions и тестировать систему, нагревая датчик и контролируя приход сообщений. Далее, можно создать свой собственный шаблон, в который скопировать необходимые Items и Triggers, для того, чтобы уже следующий термоконтроллер можно было подключить к системе мониторинга “в два клика”.

Работа с SNMP в Zabbix на примере мониторинга температуры: 15 комментариев

    • Я не совсем понял вопрос. Если он про возможность zabbix проверять отдачу Web-страниц, то есть целый раздел Web, который осуществляет проверку отдачи HTTP-контента, причём в несколько шагов, с отсылкой не только GET, но и POST-запросов, анализом кодов ответов и содержимого страниц.
      Теоретически, можно было организовать мониторинг температуры другим путём: анализировать веб-страницу, отдаваемую устройством и “выкусывать” из неё температуру конкретного датчика. И если бы Sensotronic не поддерживал SNMP, пришлось бы так и поступить.

      • Прощу прощенья, судя по всему плохо сформулировал вопрос: спрашивал о том, насколько полно Zabbix поддерживает спецификацию SNMP? Как известно, кроме отсылки трапов, в стандарте SNMP есть еще запросы GET (а так же GETNEXT, и т.д.). Т.е. запрос со стороны сервера на клиент на актуализацию списка открытых алармов например, в ответ на которых клиент вышлет повторно вышлет трапы.
        При большом кол-ве SNMP-устройств поддержка такой функциональности необходима, т.к. SNMP все-таки работает через UDP, а это протокол без гарантии доставки сообщений.

  1. Как обычно очень интересно! Жаль, устройство не очень дешево. 🙂 Кстати, можно обойтись и без ICMP используя функцию триггера nodata(). Ну и hysteresis (ZABBIX Manual тут поможет) может оказаться весьма полезным!

    Удачи!

    • Боюсь, что я опять повторюсь, если сравню себя с ядерным физиком, который удовлетворяет своё любопытство за казённый счёт 🙂
      Ага, nodata тоже вариант.
      А про гистерезис — обязательно почитаю. (Люблю программы, которые можно изучать долго. Ну и писать про них тоже 🙂 )

  2. Интересная заметка!
    Я когда-то мониторил температуру в серверной при помощи net-snmp и APC-шного PowerSchute агента, стоящего на винде. Данные снимались с термодатчика в смарт-упсе.
    Подскажите пожалуйста, умеет ли Zabbix корректно мониторить хосты с динамическими IP-адресами. Например, есть ADSL-модем работающий в режиме маршрутизатора. Соединение с интернетом производится по PPPoE. На модеме настроен клиент DynDNS. При каждом реконнекте модем получает разный IP-адрес от провайдера. Вопрос в том, резолвит ли Zabbix имя контролируемого хоста в адрес каждый раз перед посылкой ICMP-echo или делает это только один раз при добавлении хоста в список мониторинга?
    Спасибо!

      • Хм, попробую подробнее объяснить.
        В принципе там есть отдельный триггер icmpping, к его работе нареканий нет. Другое дело sysuptime. Если устройство не доступно по снмп в графике UpTime так и пишет “no data”. Но триггер не срабатывает. Хотя судя по мануалу заббикса, 1 возвращается как раз тогда, когда нет данных.

  3. спасибо за статейку..
    но как раз с polling методом все более-менее понятно:)
    трапы ж гораздо удобнее в некоторых случаях.
    и, как назло, в доке очень все скудно и не убедительно на эту тему.
    хотелось бы прояснить логику его работы этим методом.
    если можно, ввиде подобной статейки:)

    и еще момент..
    как в триггер добавить доп информацию?
    например :
    есть триггер на ifOperStatus (up/down)
    как сделать, чтоб в уведомлении приходил еще ifAlias ?
    удобство данного твика очевидна.. необходимость держать в голове все номера портов отпадает:)

  4. Уведомление: Вторая дюжина ссылок по Zabbix | Блог FlyCat.Info: КОТорый летает...

  5. Уведомление: Дюжина ссылок про Zabbix | Блог FlyCat.Info: КОТорый летает...

Добавить комментарий для flycat Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *