Nagios: уведомление через SMS
Всвязи с увеличением количества серверов возникла необходимость в их мониторинге с возможностью оповещения при возникновении проблем. Выбор пал на Nagios, так как пару лет назад, работая в компании телеком-оператора работал с ним.
Одним из условий была возможность оповещения посредством SMS сообщений.
Итак, что имеем и как все это заставить работать вместе:
— Linux (Debian 5) сервер с установленным Nagios (процесс первоначальной установки и настройки самого Nagios не буду описывать в данной статье)
— Мобильный телефон (в данном случае Nokia 3110), подключаемый посредством USB кабеля
— Желание все это дело заставить работать вместе :)
Для начала устанавливаем Nagios и настраиваем для мониторинга необходимых хостов.
Далее настраиваем систему для работы с мобильным телефоном. Этот шаг опишу так, как реализовал я, так как есть много способов как это сделать :)
Для начала установил программу gammu
apt-get install gammu
Следующий шаг — настройка gammu для работы с мобильным телефоном. Для этого можно воспользоваться утилитой
gammu-config.
После настройки gammu в домашней директории должен появиться файл .gammurc примерно следующего содержания:
~# cat ~/.gammurc
[gammu]
port=/dev/ttyACM0
connection=at115200
name=Nokia 3110c
model=nauto
Для того чтобы проверить работоспособность воспользуемся следующими командами:
~# echo «test msg» | gammu sendsms TEXT +номер_вашего_телефона
таким образом мы отсылаем SMS с текстом «test msg» на телефон "+номер_вашего_телефона" — номер телефона лучше указать в международном формате.
если SMS пришла — тогда читаем дальше, в противном случае возвращаемся к настройке gammu (думаю погуглив на эту тему, можно найти кучу документации).
Следующий шаг — это настройка Nagios для посылки SMS.
Смотрим файл /etc/passwd для того, чтобы узнать где находится домашняя директория для пользователя nagios (в моем случае: /var/run/nagios3). Копируем туда файл .gammurc и меняем права доступа для пользователя nagios:
~# chown nagios: ./.gammurc
Далее мне пришлось изменить права доступа на файл /usr/bin/gammu — присвоить UID при выполнении, таким образом они стали:
/usr/bin# ls -la ./gammu
-rwsr-xr-x 1 root root 360088 Май 11 2008 ./gammu
Далее настраиваем Nagios. Для начала добавляем новые команды. Это делается в файле настроек commands.cfg в конфигурационной директории Nagios (для меня /etc/nagios3). Добавляем следующие строки:
# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAdd
ress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/gammu sendsms TEXT $CONTACTADDRESS1$
}
# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIA
S$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/gammu sendsms TEXT
$CONTACTADDRESS1$
}
Потом переходим к настройке файла с контактами (в моем случае contacts_nagios2.cfg в директории /etc/nagios3/conf.d).
Нам необходимо добавить параметр address1, в котором указываем номер мобильного в международном формате, а также добавить команды для оповещения при смене статуса сервисов или хостов.
Вот как было у меня до:
define contact{
contact_name vano
alias Vano
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email vano@gde-to.tam
}
И как стало после:
define contact{
contact_name vano
alias Vano
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
email vano@gde-to.tam
address1 +700000000000
}
Далее перезапускаем Nagios и начинаем наслаждаться приходящими сообщениями :)
Хотя лучше, когда их меньше :)
PS: просьба ногами сильно не пинать, так как это мой первый пост :) если есть вопросы — задавайте, постараюсь ответить :)
UPD: заметил еще один нюанс, по крайней мере у меня. Так как для пользователя nagios домашняя директория указана в /var/run/nagio3, то после перезагрузки оттуда исчезает файл .gammurc. Решил просто, в /etc/rc.local прописал, чтобы копировал этот файл в директорию /var/run/nagios3 и менял владельца на nagios, после чего — перезапуск сервиса:
/bin/cp /root/.gammurc /var/run/nagios3
/bin/chown -R nagios: /var/run/nagios3
/etc/init.d/nagios3 restart
Всвязи с увеличением количества серверов возникла необходимость в их мониторинге с возможностью оповещения при возникновении проблем. Выбор пал на Nagios, так как пару лет назад, работая в компании телеком-оператора работал с ним.
Одним из условий была возможность оповещения посредством SMS сообщений.
Итак, что имеем и как все это заставить работать вместе:
— Linux (Debian 5) сервер с установленным Nagios (процесс первоначальной установки и настройки самого Nagios не буду описывать в данной статье)
— Мобильный телефон (в данном случае Nokia 3110), подключаемый посредством USB кабеля
— Желание все это дело заставить работать вместе :)
Для начала устанавливаем Nagios и настраиваем для мониторинга необходимых хостов.
Далее настраиваем систему для работы с мобильным телефоном. Этот шаг опишу так, как реализовал я, так как есть много способов как это сделать :)
Для начала установил программу gammu
apt-get install gammu
Следующий шаг — настройка gammu для работы с мобильным телефоном. Для этого можно воспользоваться утилитой
gammu-config.
После настройки gammu в домашней директории должен появиться файл .gammurc примерно следующего содержания:
~# cat ~/.gammurc
[gammu]
port=/dev/ttyACM0
connection=at115200
name=Nokia 3110c
model=nauto
Для того чтобы проверить работоспособность воспользуемся следующими командами:
~# echo «test msg» | gammu sendsms TEXT +номер_вашего_телефона
таким образом мы отсылаем SMS с текстом «test msg» на телефон "+номер_вашего_телефона" — номер телефона лучше указать в международном формате.
если SMS пришла — тогда читаем дальше, в противном случае возвращаемся к настройке gammu (думаю погуглив на эту тему, можно найти кучу документации).
Следующий шаг — это настройка Nagios для посылки SMS.
Смотрим файл /etc/passwd для того, чтобы узнать где находится домашняя директория для пользователя nagios (в моем случае: /var/run/nagios3). Копируем туда файл .gammurc и меняем права доступа для пользователя nagios:
~# chown nagios: ./.gammurc
Далее мне пришлось изменить права доступа на файл /usr/bin/gammu — присвоить UID при выполнении, таким образом они стали:
/usr/bin# ls -la ./gammu
-rwsr-xr-x 1 root root 360088 Май 11 2008 ./gammu
Далее настраиваем Nagios. Для начала добавляем новые команды. Это делается в файле настроек commands.cfg в конфигурационной директории Nagios (для меня /etc/nagios3). Добавляем следующие строки:
# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAdd
ress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/gammu sendsms TEXT $CONTACTADDRESS1$
}
# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIA
S$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/gammu sendsms TEXT
$CONTACTADDRESS1$
}
Потом переходим к настройке файла с контактами (в моем случае contacts_nagios2.cfg в директории /etc/nagios3/conf.d).
Нам необходимо добавить параметр address1, в котором указываем номер мобильного в международном формате, а также добавить команды для оповещения при смене статуса сервисов или хостов.
Вот как было у меня до:
define contact{
contact_name vano
alias Vano
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email vano@gde-to.tam
}
И как стало после:
define contact{
contact_name vano
alias Vano
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
email vano@gde-to.tam
address1 +700000000000
}
Далее перезапускаем Nagios и начинаем наслаждаться приходящими сообщениями :)
Хотя лучше, когда их меньше :)
PS: просьба ногами сильно не пинать, так как это мой первый пост :) если есть вопросы — задавайте, постараюсь ответить :)
UPD: заметил еще один нюанс, по крайней мере у меня. Так как для пользователя nagios домашняя директория указана в /var/run/nagio3, то после перезагрузки оттуда исчезает файл .gammurc. Решил просто, в /etc/rc.local прописал, чтобы копировал этот файл в директорию /var/run/nagios3 и менял владельца на nagios, после чего — перезапуск сервиса:
/bin/cp /root/.gammurc /var/run/nagios3
/bin/chown -R nagios: /var/run/nagios3
/etc/init.d/nagios3 restart