До сих пор кажется невероятным, что сервер может мне позвонить в случае проблем, но в действительности реализация оказалась даже проще, чем я думал. Своим решением спешу поделиться.
Все действия выполняются на Ubuntu, в качестве sip-провайдера выступает sipnet.ru
Загружаем и собираем pjsip:
Из всего что насобиралось понадобится только pjsua:
Создадим файл /etc/pjsuarc со следующим содержанием:
Теперь самое время проверить конфигурацию и сделать тестовый звонок:
В случае с sipnet, если не включена услуга «АОН» в разделе «Премиум услуги» (не знаю почему премиум, услуга бесплатная), или выбран тот же номер, на который совершается звонок, то определится номер +74993462198 (по крайней мере для России), это не позволяет идентифицировать, что звонит наш сервер.
Поэтому я поступил так: зарегистрировал в sipnet свой второй номер и указал его в качестве отображаемого номера. В телефоне сохранил его под именем Nagios и поставил ему приятную громкую мелодию.
Далее изменим права на /etc/pjsuarc, чтобы видеть пароль могли только root и nagios:
В /etc/nagios3/commands.cfg добавим следующие строки:
В /etc/nagios3/conf.d/contacts_nagios2.cfg добавим контакт:
Nagios будет звонить в любое время, но только в критических случаях.
И не забудем добавить новый контакт в том же конфиге в нужную группу:
На всякий случай убеждаемся, что в критическом случае сервер действительно нам звонит, например исправив пароль для доступа к MySQL на неверный в /etc/nagios3/conf.d/services_nagios2.cfg
Перезапускаем Nagios:
И ждём звонка.
При желании можно пойти дальше и добавить text-to-speech, но мне оказалось достаточно звонка с определённого номера, чтобы увидеть что появилась проблема, а детали можно узнать, проверив почту.
Мануал по pjsua
Все действия выполняются на Ubuntu, в качестве sip-провайдера выступает sipnet.ru
Загружаем и собираем pjsip:
wget http://www.pjsip.org/release/1.10/pjproject-1.10.tar.bz2
tar xfv pjproject-1.10.tar.bz2
cd pjproject-1.10
./configure --disable-sound
make dep
make
Из всего что насобиралось понадобится только pjsua:
sudo cp pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu /usr/bin/pjsua
Создадим файл /etc/pjsuarc со следующим содержанием:
--duration=1 #если снимем трубку, то сервер тут же отключится
--null-audio #чтобы pjsua не ругалась на отсутствие звукового устройства
--id sip:SIPID@sipnet.ru #конфиг для sipnet.ru
--registrar sip:sipnet.ru
--realm etc.tario.ru
--username SIPID
--password PASSWORD
Теперь самое время проверить конфигурацию и сделать тестовый звонок:
pjsua --config-file=/etc/pjsuarc sip:+12345678901@sipnet.ru
В случае с sipnet, если не включена услуга «АОН» в разделе «Премиум услуги» (не знаю почему премиум, услуга бесплатная), или выбран тот же номер, на который совершается звонок, то определится номер +74993462198 (по крайней мере для России), это не позволяет идентифицировать, что звонит наш сервер.
Поэтому я поступил так: зарегистрировал в sipnet свой второй номер и указал его в качестве отображаемого номера. В телефоне сохранил его под именем Nagios и поставил ему приятную громкую мелодию.
Далее изменим права на /etc/pjsuarc, чтобы видеть пароль могли только root и nagios:
sudo chmod 640 /etc/pjsuarc
sudo chown root:nagios /etc/pjsuarc
В /etc/nagios3/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$
}
# 'notify-service-by-sip' command definition
define command{
command_name notify-service-by-sip
command_line (sleep 120 && echo q) | /usr/bin/pjsua --config-file=/etc/pjsuarc sip:$CONTACTEMAIL$
}
В /etc/nagios3/conf.d/contacts_nagios2.cfg добавим контакт:
define contact{
contact_name user_sip
alias useralias
service_notification_period 24x7
host_notification_period 24x7
service_notification_options c
host_notification_options d
service_notification_commands notify-service-by-sip
host_notification_commands notify-host-by-sip
email +12345678901@sipnet.ru
}
Nagios будет звонить в любое время, но только в критических случаях.
И не забудем добавить новый контакт в том же конфиге в нужную группу:
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members root,user_email,user_sip
}
На всякий случай убеждаемся, что в критическом случае сервер действительно нам звонит, например исправив пароль для доступа к MySQL на неверный в /etc/nagios3/conf.d/services_nagios2.cfg
Перезапускаем Nagios:
sudo service nagios3 restart
И ждём звонка.
При желании можно пойти дальше и добавить text-to-speech, но мне оказалось достаточно звонка с определённого номера, чтобы увидеть что появилась проблема, а детали можно узнать, проверив почту.
Мануал по pjsua