пятница, 7 марта 2014 г.

SMS-уведомления для Nagios

В последнее время цены на SMS увеличились в два или три раза почти на всех шлюзах и стало накладно использовать их для отправки SMS-уведомлений от Nagios, особенно если в день приходит иногда по сотне сообщений. Относительно недавно обнаружил необычный сервис отправки sms.ru, который предлагает бесплатную отправку сообщений, с тем лишь условием, что SMS будут приходить только на один номер телефона. Сначала было подозрительно, но попользовавшись им около 3 месяцев могу сказать, что работает всё просто отлично. Задержки по времени почти такие же как у всех, но при этом гораздо дешевле.
Естественно услуги sms.ru не ограничиваются отправкой SMS на один номер, в системе присутствуют все необходимые средства для массовых рассылок на различные номера с различными параметрами и естественно буквенные отправители.
У сервиса есть API и примеры реализации для нескольких языков программирования, удобный, понятны и богатый функционалом личный кабинет и даже партнёрская программа.
В общем, рекомендую!
Итак, как прикрутить к Nagios. А всё просто до идиотизма:

в /etc/nagios3/commands.cfg объявляем команды которые будут отсылать сообщения.
Первый блок для узлов, второй для сервисов, впрочем извратиться можно по разному, я думаю так проще.

define command{
        command_name    sms-smsru
        command_line    wget -qO- --spider  "http://sms.ru/sms/send?api_id=&text=$HOSTNAME$%20is%20$HOSTSTATE$&to=$_CONTACTPHONE$"
        }

define command{
        command_name    sms-smsru-service
        command_line    wget -qO- --spider  "http://sms.ru/sms/send?api_id=&text=$HOSTNAME$%20$SERVICEDESC$%20is%20$SERVICESTATE$&to=$_CONTACTPHONE$"
        }

Смысл я думаю всем ясен, при помощи wget мы делаем GET-запрос к сервису, что бы ничего не скачивалось и не отображалось, добавлены параметры -qO- и --spider.В тексте отправляем имя узла и что с ним стряслось. Кто не в курсе %20 - пробел.

Теперь в файле, где описываются контакты (/etc/nagios3/conf.d/contacts_nagios2.cfg) пропишем какие команды нужно выполнять, когда, что то происходит на подконтрольных узлах. Контакту который добровольно согласился получать кучу sms нужно добавить дополнительный параметр _phone в который запишем его телефон. Если пользователь один, можно записать сразу в строку запроса, но всё же я думаю удобней прописать в описание контакта, мало ли где ещё может понадобится этот номер.

Немного отойду от темы. В Nagios в описание контакта можно прописывать свои дополнительные параметры, их название следует начинать с "_", а затем с ним обращаться как $_CONTACT<ваш параметр>$ Таким образом у меня например назначен jabber для некоторых контактов.

Теперь прописываем нужную команду, пример для узлов:
host_notification_commands      sms-smsru

Общая картина должна выглядеть примерно так:

define contact {
        contact_name                    VPypkin
        alias                           Vasiliy Pupkin
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   sms-smsru-service
        host_notification_commands     sms-smsru
        email                           myemail@example.com
        _phone                          79000000000
}

Осталось перезагрузить Nagios и попробовать.
sudo service nagios3 reload
А проверить можно, что нибудь сломав, или починив, ну или нажав "Send custom host notification" в web-интерфейсе.

Всем удачи.

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

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