Nagios и оповещения в jabber
Не знаю кому как, но для меня настройка сабжа оказалась целой опупеей :) Поэтому я не могу не написать об этом в блог, дабы опупея не повторилась. Всё, конечно, как всегда оказалось просто, но чтоб понять что это просто — приходится много думать…Так вот, есть у нас тривиальная задача — получать уведомления от нагиоса в корпоративный джаббер. Собственно, в процессе нижеследующих изысканий была обнаружена еще одна интересная вещь — NagiosAgent. Удобная штука, есть в портах, с qt’шным гуем, тихо мирно висит в трее и в случае чего выводит жуткие (имхо) сообщения на экран поверх всех окон. Кому интересно — можно почитать/скачать тут. Ну а теперь о главном.
Нам нужен sendxmpp.
[cc lang=»bash»]cd /usr/ports/net-im/sendxmpp
make install clean[/cc]
Теперь нам нужен конфиг. Конфиг нам нужен для того, чтоб sendxmpp брал оттуда логин-пароль аккаунта, с которого нагиос будет слать уведомления, который, конечно же, надо предварительно зарегистрировать :) Да и неплохо было бы этот аккаунт добавить в свой ростер на всякий случай. Конфиг представляет из себя одну строчку и лежит там же, где и все остальные конфиги нагиоса — в /usr/local/etc/nagios.
[cc lang=»bash»]touch sendxmpprc
echo ‘nagios@jabber.mlcom.ru 12345’ > sendxmpprc[/cc]
Делаем скриптик следующего вида:
[cc lang=»bash»]#!/bin/sh
/usr/bin/printf «%b» «***** Nagios *****\nNotification Type: «$1″\nService: «$2″\nHost: «$3″\nAddress: «$4″\nState: «$5″\nDate/Time: «$6» \nAdditional Info:\n «$7″ \n» | /usr/local/bin/sendxmpp «$8» -f /usr/local/etc/nagios/sendxmpprc -s «Nagios Alert»[/cc]
Обзываем его jabber.sh, например, и кладем в папку плагинов нагиоса — /usr/local/libexec/nagios.
Теперь описываем команду для оповещения в конфиге нагиоса:
[cc lang=»bash»]# ‘notify-by-jabber’ command definition
define command{
command_name notify-by-jabber
command_line /usr/local/libexec/nagios/jabber.sh ‘$NOTIFICATIONTYPE$’ ‘$SERVICEDESC$’ ‘$HOSTALIAS$’ ‘$HOSTADDRESS$’ ‘$SERVICESTATE$’ ‘$LONGDATETIME$’ ‘$SERVICEOUTPUT$’ ‘$CONTACTEMAIL$’
}
[/cc]
В общем то переменные можно поставить на свой вкус и цвет, не забыв их описать соответствующим образом в скрипте. Самое важное здесь — одинарные кавычки, в которые заключена каждая переменная :)
Ну и конечно же контакт того, кого будем уведомлять:
[cc lang=»bash»]define contact{
contact_name admin
use generic-contact
alias Nagios Admin
email admin@jabber.mlcom.ru
can_submit_commands 1
}[/cc]
И на этом, в общем то, всё. Отмечаем хосты и сервисы, о которых должны приходить уведомления, и ждем когда они все попадают, чтоб бдительный нагиос нам об этом сообщил :)