Настройка оповещения Nagios по ICQ
Простое решение для нотификации работы серверов при помощи ICQ:
1) Ставим vicq клиент. Регистрируем для него UIN. Из примера конфигурационного файла создаем работающий конфиг. Обязательные параметры uin и password.
2) Настраиваем nagios для отсылки сообщений о проблемах:
а) Задаем для своего контакта параметр pager равный номеру вашего ICQ.
б) Задаем 2-е дополнительне комманды в commands.cfg
1 2 3 4 5 6 7 8 9 10 |
# ICQ Notification define command{ command_name notify-host-by-icq command_line /usr/bin/printf "%b" "msg $CONTACTPAGER$\n***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n.\n" | /usr/local/bin/vicq -c /usr/local/etc/vicq.conf -b -o -t 5 } define command { command_name notify-service-by-icq command_line /usr/bin/printf "msg $CONTACTPAGER$\n***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n.\n" | /usr/local/bin/vicq -c /usr/local/etc/vicq.conf -b -o -t 5 } |
в) В шаблоне описывающем generic-contact задаем следующие параметры:
1 2 |
service_notification_commands notify-service-by-email,notify-service-by-icq host_notification_commands notify-host-by-email,notify-host-by-icq |
После всех манипуляций – перезагружаем Nagios и “роняем” какой-нибудь сервис. Все должно работать.
Сообщения будут приходить такими:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
***** Nagios ***** Notification Type: PROBLEM Service: AMAVIS Host: localhost Address: 127.0.0.1 State: CRITICAL Date/Time: Sun Nov 2 01:22:37 MSK 2008 Additional Info: Connection refused |
Кстати, с vicq есть 1 баг при запуске его нагиосом. Так как клиент использует Term::Readline, то возникает ошибка при запуске:
1 |
Cannot open /dev/tty for read at ... |
Решается проблема просто, надо подредактировать файл vicq. Перед 1063 строкой вставить следующий кусок кода:
1 2 3 4 |
open (FH, "/dev/tty" ) or eval 'sub Term::ReadLine::findConsole { ("&STDIN", "&STDERR") }'; die $@ if $@; close (FH); |
Все будет работать без проблем.
comments powered by HyperComments