суббота, 25 февраля 2012 г.

Модификация плагина check_snmp для системы мониторинга Nagios.

Столкнулся с небольшой проблемой при настройке мониторинга Raid контроллеров через SNMP с помощью плагина check_snmp. А именно, хочу мониторить политику использования кеша контроллера WriteThrough/WriteBack, при этом "переключение" политики это штатная ситуация, когда контроллер запускает тренировку аккумуляторной батареи - кеш на запись отключается, когда тренировка заканчивается - кеш включается. Для чего это мониторить? Да просто нужно знать почему могут "тормозить" в данный момент диски на запись...


Так вот, по snmp мы получаем строку с названием текущей политики, следовательно плагин check_snmp настраиваем на проверку содержания определённой строки (например WriteThrough).
К сожалению, данный плагин при проверке на строку может возвращать только два состояния OK или CRITICAL, и как я уже писал выше данный тест делает проверку штатной ситуации, тоесть ничего критичного нет во время тренировки батареи и нет никакой необходимости будить меня смской в два часа ночи, а можно ограничиться лишь email сообщением...
В общем решение напрашивается само собой, а именно для таких тестов нам нужен плагин, который сможет возвращать другие состояния: OK или WARNING...

Когда задача была поставлена, было решено модифицировать плагин добавив ключ позволяющий указать, что при проверке на строку вместо состояния CRITICAL возвращать WARNING.
Модификацию проводил на версии 1.4.15-34-gd287. Учитывая, что разработчики рекомендуют использовать всегда последнюю версию, не вижу большого смысла выкладывать патч к определённой версии, так что можете загрузить мою модификацию скрипта на www.syschk.net.
В архиве найдёте два файла:

check_snmp.c.org - оригинальный исходник версии 1.4.15-34-gd287
check_snmp.c - модифицированный исходник

Загрузить последнюю версию плагинов можете на сайте sourceforge.net и перенести в неё мои изменения. В модифицированном исходнике все свои вставки я помечал как
//RAIN mod
......
//RAIN mod END
После внесения изменений и компиляции плагин готов к работе. Вся модификация включает в себя добавление ключа --no-critical и соответственно его обработка, тоесть при указанном ключе будет возвращено состояние предупреждения вместо критического. Для просмотра справки вызывайте плагин из командной строки с ключом --help.
Пример использования модифицированного плагина в определении команд Nagios:
define command{
        command_name    check_snmp_lsi_vd_cache_policy
        command_line    $USER1$/check_snmp -H $HOSTADDRESS$ -m LSI-MegaRAID-SAS-MIB -C $ARG1$ -o LSI-MegaRAID-SAS-MIB::currentCachePolicy.$ARG2$ -P 2c -r "WriteThrough" --invert-search --no-critical -l CachePolicy
        }

Вот и всё.

Комментариев нет:

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