Настройка оповещения Nagios по ICQ
Простое решение для нотификации работы серверов при помощи ICQ:
1) Ставим vicq клиент. Регистрируем для него UIN. Из примера конфигурационного файла создаем работающий конфиг. Обязательные параметры uin и password.
2) Настраиваем nagios для отсылки сообщений о проблемах:
а) Задаем для своего контакта параметр pager равный номеру вашего ICQ.
б) Задаем 2-е дополнительне комманды в commands.cfg
[code]# 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
}[/code]
в) В шаблоне описывающем generic-contact задаем следующие параметры:
[code]service_notification_commands notify-service-by-email,notify-service-by-icq
host_notification_commands notify-host-by-email,notify-host-by-icq[/code]
После всех манипуляций — перезагружаем Nagios и «роняем» какой-нибудь сервис. Все должно работать.
Сообщения будут приходить такими:
[code]***** 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[/code]
Кстати, с vicq есть 1 баг при запуске его нагиосом. Так как клиент использует Term::Readline, то возникает ошибка при запуске:
[code]Cannot open /dev/tty for read at ...[/code]
Решается проблема просто, надо подредактировать файл vicq. Перед 1063 строкой вставить следующий кусок кода:
[code] open (FH, "/dev/tty" )
or eval 'sub Term::ReadLine::findConsole { ("&STDIN", "&STDERR") }';
die $@ if $@;
close (FH);[/code]
Все будет работать без проблем.


лучше бы для джаббера что-нить…
Для интеграции с Jabber есть куча примеров в Гугле, например:
http://www.gridpp.ac.uk/wiki/Nagios_jabber_notification