Настройка оповещения 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]

Все будет работать без проблем.

2 комментария

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

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

Это не спам.