Приветствую Вас, воришка
Главная » 2011 » Октябрь » 12 » Nagios: оповещение с помощью SMS с помощью Google Calendar
00:00
Nagios: оповещение с помощью SMS с помощью Google Calendar

SMS-уведомления из Nagios малой кровью

Стоял как-то раз админ в курилке и думал — а как бы ему так в нерабочее время вдали от компьютера и интернетов узнать, что на каком-то из его серверов проблема возникла. Можно конечно посадить студента за монитор с Nagios, чтоб он если что звонил админу и говорил «Тут красненькое что-то появилось»… Стоп. Звонил. На мобильный. Нафиг студента, SMS можно получать. На этом мысль остановилась и админ пошёл пить кофе. Потом вернулся и сел за рабочее место, где в браузуре был загружен Google Calendar… и решение пришло само.

Итак, у нас есть настроенный Nagios и желание получать SMS о возникающих проблемах на свой телефон.
Для удобства регистрируем отдельный аккаунт Google — что-нибудь типа nagios_alert@your-company-domain.com и идём настраивать календарь для этого аккаунта. Нас интересуют уведомления для календаря по-умолчанию — выставляем уведомление за 1 минуту до события по SMS.
Также нужно привязать к этому аккаунту номер своего мобильного (это делается там же, в настройках календаря).
Далее, следуем по этой ссылке: code.google.com/p/gcalcli/ и качаем GCalCLI — консольная утилита на Python, которая позволяет работать с гугловым календарём.
Всё, что требуется для работы утилиты — описано на странице проекта, там буквально пара Python-модулей.
Для нормальной работы gcalcli нужно его немного допилить (куда ж без этого).
Открываем файл на редактирование идём на строку 226 и меняем её на это:
feedPrefix    = 'https?://www.google.com/calendar/feeds/'

Далее, кладём этот скрипт куда-нибудь поудобнее, где аккаунт из-под которого крутится Nagios-демон мог его пускать. Я выбрал /usr/bin.
Рядом с gcalcli кладём bash-скрипт примерно такого содержания:
#!/bin/bash
# notify_sms for Nagios by Br0ziliy

NOW_HOUR=`date +%-H`
NOW_MIN=`date +%-M`

[ $NOW_HOUR -gt 0 ] && H=$(( $NOW_HOUR-1 )) || H=23
[ $NOW_MIN -lt 55 ] && M=$(( $NOW_MIN+5 )) || M=59

/usr/bin/gcalcli --user nagios_alert@your-company-domain.com --pw yourpass quick "$H:$M $@"

Скрипт добавит «быстрое» событие в календарь аккаунта nagios_alert@your-company-domain.com с текстом, который будет передан в параметрах (см. далее).
Замечу также, что время на Nagios-сервере и моё локальное время отличаются на 1 час — в скрипте эта разница учтена.
Далее конфигурируем сам Nagios.
Добавляем команду notify-service-by-sms:

define command{
        command_name    notify-service-by-sms
        command_line    /usr/bin/notify_sms '$NOTIFICATIONTYPE$ $HOSTALIAS$/$SERVICEDESC$: $SERVICEOUTPUT$'

}

Добавляем отдельный контакт для SMS-уведомлений (так просто удобней):
define contact{
        contact_name                    mobile
        alias                          mobile
        host_notification_period        never # для хостов уведомлений не нужно
        service_notification_period     nonworkhours # SMS получаем только в нерабочее время
        service_notification_options    c,r # получать только критические уведомления
        service_notification_commands  notify-service-by-sms
        host_notification_commands     notify-host-by-email
}

Добавляем этот контакт в нужную группу, рестартуем Nagios — всё. Теперь админ всегда будет знать где-чо лежит. У меня по тестам сообщение приходит ровно через 8 минут после того, как появилась проблема (у вас может быть больше/меньше в зависимости от настроек Nagios).

По поводу номера мобильного телефона — я тестировал на МТС — работает на 5.

По поводу платных сервисов отправки SMS — да, я про них знаю, но в названии топика потому и есть слова «малой кровью».
Взято из: habrahabr
Просмотров: 1790 | Добавил: Эльф | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]