Назрела проблема, что на оповещение об особо крупных и значимых авариях нужна незамедлительная реакция. Стандартный способ оповещения в виде СМС или Email`ов не давал нужного результата, особенно ночью, когда крепко спишь и легко пропустить "блинкающий" звук нотификаций. Единственное чтоб точно могло меня разбудить, это телефонный звонок и при необходимости не один повторный.
Для этого можно использовать софтсвитч на базе asterisk и sip аккаунт ip-телефонии. Тут фантазия может развернутся вплоть до генерации голосового сообщения о проблеме, ну или проигрывание зарание заготовленных шаблонов. Но это длинный и интересный путь, а надо чтоб было просто и сразу. По этому хватит и обычного звонка на телефон.
Т.е. нужен sip аккаунт, консольный sip клиент и мониторинг, который сможет, используя клиента, звонить при проблеме. На сервере мониторинга уже установлен и настроен icinga (это форк nagios). Гугл в качестве подходящего консольного sip клиента подсказал pjsip, это комплекс утилит для работы с ip телефонией. Ставить лучше из исходных кодов. После установки нам понадобится pjsua. Но перед этим нам необходим провайдер ip телефонии, через которого мы будем звонить, желательно дешево или вообще бесплатно. Я для этих целей решил использовать sipnet.ru. При регистрации необходимо подтвердить свой номер телефона, и если все получится, то лучше сделать минимальный платеж на 3 у.е. При правильном использовании, не брать трубку, когда вам позвонит мониторинг, баланc будет вечным. После регистрации у вас будет SIP_ID (не путайте с логином в личном кабинете) и пароль. Звонок осуществляется следующим способом:
/usr/bin/pjsua --config-file=/etc/pjsuarc sip:+7ХХХХХХХХХХ@sipnet.ru
где
pjsuarc
- конфиг фаил следующего содержания:
--duration=1
--null-audio
--id sip:SIP_ID@sipnet.ru
--registrar sip:sipnet.ru
--realm etc.tario.ru
--username SIP_ID
--password ВАШ_ПАРОЛЬ
+7ХХХХХХХХХХ
- тот номер телефона, который вы подтверждали при регистрации в сипнет.ру
После исполнения комманды на ваш телефон позвонит номер, в моем случае всегда звонит +7(499)9210227, его я и записал в контакты как ~~Пиздец~~ Мониторинг. Не забывайте дать права на чтение конфига /etc/pjsuarc
пользователю от которого работает мониторинг.
Далее необходимо произвести настройки самого мониторинга, в моем случае необходимо добавить новый контакт в /etc/icinga/objects/contacts.cfg
define contact{
contact_name user_sip
alias user_sip
use generic-contact
host_notification_period 24x7
host_notification_options d
host_notification_commands notify-host-by-sip
email +7ХХХХХХХХХХ@sipnet.ru
}
Я выставил в настройках оповещать только о недоступности кого-либо сервера т.е. при полном его падении. Далее необходимо добавить комманду на оповещение в /etc/icinga/conf.d/commands.cfg
# 'notify-host-by-sip' command definition
define command{
command_name notify-host-by-sip
command_line ( sleep 120 && echo q ) | /usr/bin/pjsua --config-file=/etc/pjsuarc sip:$CONTACTEMAIL$ >/dev/null 2>&1
}
Тут пытаться дозвониться до вас будут в течении 120 секунд.
И в конце нужно добавить в группу admins в моем случае созданный контакт user_sip, это делается в том же файле /etc/icinga/objects/contacts.cfg
define contactgroup{
contactgroup_name admins
alias Icinga Administrators
members icingaadmin,user_sip
}
Перезапускаем демона мониторинга:
sudo service icinga reload
И если все в порядке, то получаем очень назойливый мониторинг, который в случае падения сервера задолбит вас звонками.