Nagios и оповещения в jabber
Не знаю кому как, но для меня настройка сабжа оказалась целой опупеей :) Поэтому я не могу не написать об этом в блог, дабы опупея не повторилась. Всё, конечно, как всегда оказалось просто, но чтоб понять что это просто — приходится много думать…Так вот, есть у нас тривиальная задача — получать уведомления от нагиоса в корпоративный джаббер. Собственно, в процессе нижеследующих изысканий была обнаружена еще одна интересная вещь — NagiosAgent. Удобная штука, есть в портах, с qt’шным гуем, тихо мирно висит в трее и в случае чего выводит жуткие (имхо) сообщения на экран поверх всех окон. Кому интересно — можно почитать/скачать тут. Ну а теперь о главном.
Нам нужен sendxmpp.
1 2 | cd /usr/ports/net-im/sendxmpp make install clean |
Теперь нам нужен конфиг. Конфиг нам нужен для того, чтоб sendxmpp брал оттуда логин-пароль аккаунта, с которого нагиос будет слать уведомления, который, конечно же, надо предварительно зарегистрировать :) Да и неплохо было бы этот аккаунт добавить в свой ростер на всякий случай. Конфиг представляет из себя одну строчку и лежит там же, где и все остальные конфиги нагиоса — в /usr/local/etc/nagios.
1 2 | touch sendxmpprc echo 'nagios@jabber.mlcom.ru 12345' > sendxmpprc |
Делаем скриптик следующего вида:
1 2 | #!/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" |
Обзываем его jabber.sh, например, и кладем в папку плагинов нагиоса — /usr/local/libexec/nagios.
Теперь описываем команду для оповещения в конфиге нагиоса:
1 2 3 4 5 | # '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$' } |
В общем то переменные можно поставить на свой вкус и цвет, не забыв их описать соответствующим образом в скрипте. Самое важное здесь — одинарные кавычки, в которые заключена каждая переменная :)
Ну и конечно же контакт того, кого будем уведомлять:
1 2 3 4 5 6 7 8 | define contact{ contact_name admin use generic-contact alias Nagios Admin email admin@jabber.mlcom.ru can_submit_commands 1 } |
И на этом, в общем то, всё. Отмечаем хосты и сервисы, о которых должны приходить уведомления, и ждем когда они все попадают, чтоб бдительный нагиос нам об этом сообщил :)