Asterisk и Nagios
И так начнем. Потребовалось мониторить сервисы с помощью nagios, но по мимо мониторинга захотелось получать оповещение о проблемах в сети. Для начало настроил отсылку на почту, но данный способ не понравился, так как пока проверишь почту время утрачено. Тут пришла идея звонить на мобильный....
Что потребовалось.
Сервер! под Linux
•Nagios 3.0.1 использовал EZNAG
•Cepstral Swift 4.X Это для создания фраз(хотя можно и свои поставить)
•Asterisk 1.4.X
Ставим *
Ставим Eznag
Ставим Cepstral Swift
Думаю заморочек не появится...
После изменяем конфиг nagiosa
Создаем контакт
vi /usr/local/nagios/etc/objects/contactst.cfg Можно доработать...
После потребуется создать Notification command. Это требуется для того чтоб нам * позвонила...
vi /usr/local/nagios/etc/objects/commands.cfg НУ а теперь правим настройки *
/etc/asterisk/extensions.conf И так настройки оповещения мы сделали нагиос и * работаю.
Отвлечемся чуть на добавление хостов так как с этим возник затык. Долго не мог добиться того чтоб nagios отрабатывал Notification command.
Так что ниже конфиг для хостов и сервисов
Hosts Service Обратите внимание на то что host_name должен совпадать в hoste и service///
Далее создаем скрип для создания звонка...
Изменение и добавление user для обзвона лучше делать в скрипте. ИМХО
ААА и еще забыл сообшать нам потребуеться sox ну это так же для сбора фраз...
Выполняем все эти действия! Запускаем, * запускаем nagios/ Тушим любой host и после ждем звонка на мобильник или рабочий телефон.
В статье не стал указывать как настроить план набора для совершения звонка так как каждый его может собрать так как ему нравиться...
С Уважением
Что потребовалось.
Сервер! под Linux
•Nagios 3.0.1 использовал EZNAG
•Cepstral Swift 4.X Это для создания фраз(хотя можно и свои поставить)
•Asterisk 1.4.X
Ставим *
Ставим Eznag
Ставим Cepstral Swift
Думаю заморочек не появится...
После изменяем конфиг nagiosa
Создаем контакт
vi /usr/local/nagios/etc/objects/contactst.cfg
Код: Выделить всё
define contact { contact_name kinder use generic-contact alias Nagios Admin contactgroups admins host_notifications_enabled 1 service_notifications_enabled 1 host_notification_period 24x7 service_notification_period 24x7 host_notification_options d,u,r,f,s service_notification_options w,u,c,r,f,s host_notification_commands notify-host-by-email,notify-host-by-phone service_notification_commands notify-service-by-email,notify-service-by-phone email [email protected] address2 local/[email protected] } После потребуется создать Notification command. Это требуется для того чтоб нам * позвонила...
vi /usr/local/nagios/etc/objects/commands.cfg
Код: Выделить всё
define command{ command_name notify-host-by-phone command_line $USER1$/notify-by-phone.sh $CONTACTADDRESS2$ "Nagios Host Alarm. Notification Type: $NOTIFICATIONTYPE$. Host: $HOSTNAME$. State: $HOSTSTATE$. Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Time: $LONGDATETIME$" _host_$HOSTEVENTID$ } define command{ command_name notify-service-by-phone command_line $USER1$/notify-by-phone.sh $CONTACTADDRESS2$ "Nagios Service Alarm. Notification Type: $NOTIFICATIONTYPE$. Service: $SERVICEDESC$. Host: $HOSTALIAS$. Address: $HOSTADDRESS$. State: $SERVICESTATE$. Time: $LONGDATETIME$. Additional Info: $SERVICEOUTPUT$" _service_$SERVICEEVENTID$ } /etc/asterisk/extensions.conf
Код: Выделить всё
[alarm] exten => s,1,Answer exten => s,2,NoOp(alarmid: ${alarmid}) exten => s,3,Playback(/var/spool/alarm/alarm${alarmid}) exten => s,4,HangupОтвлечемся чуть на добавление хостов так как с этим возник затык. Долго не мог добиться того чтоб nagios отрабатывал Notification command.
Так что ниже конфиг для хостов и сервисов
Hosts
Код: Выделить всё
# added by EZNag/Nmap define host { host_name name use linux-server alias name address 192.168.0.1 check_command check-host-alive max_check_attempts 3 check_period 24x7 contacts kinder notification_interval 120 notification_period 24x7 notification_options d,u,r notifications_enabled 1 } Код: Выделить всё
# added by EZNag/Nmap define service { service_description PING host_name name use local-service is_volatile 0 check_command check_ping!100.0,20%!500.0,60% max_check_attempts 3 check_period 24x7 notification_interval 120 notification_period 24x7 notification_options w,u,c,r contact_groups global-admins } Далее создаем скрип для создания звонка...
Код: Выделить всё
#!/bin/bash channel=$1 alarmtext=$2 alarmid=$3 cd /var/spool/alarm echo $alarmtext > alarm$alarmid.txt /opt/swift/bin/swift -n Allison-8KHz -f alarm$alarmid.txt -o alarm$alarmid.tmp.wav /usr/bin/sox alarm$alarmid.tmp.wav -r 8000 alarm$alarmid.ul /bin/mv -f alarm$alarmid.ul alarm$alarmid.ulaw /bin/rm alarm$alarmid.tmp.wav echo "Channel: local/[email protected] MaxRetries: 4 RetryTime: 30 WaitTime: 30 Context: alarm Extension: s Priority: 1 callerid:40 Set: alarmid=$alarmid" > alarm1$alarmid.call echo "Channel: local/[email protected] MaxRetries: 4 RetryTime: 30 WaitTime: 30 Context: alarm Extension: s Priority: 1 callerid:40 Set: alarmid=$alarmid" > alarm2$alarmid.call echo "Channel: local/[email protected] MaxRetries: 4 RetryTime: 30 WaitTime: 30 Context: alarm Extension: s Priority: 1 callerid:40 Set: alarmid=$alarmid" > alarm3$alarmid.call /bin/chmod 777 alarm1$alarmid.call /bin/chmod 777 alarm2$alarmid.call /bin/chmod 777 alarm3$alarmid.call /bin/mv alarm1$alarmid.call /var/spool/asterisk/outgoing /bin/mv alarm2$alarmid.call /var/spool/asterisk/outgoing /bin/mv alarm3$alarmid.call /var/spool/asterisk/outgoingААА и еще забыл сообшать нам потребуеться sox ну это так же для сбора фраз...
Код: Выделить всё
mkdir /var/spool/alarm chown nagios.asterisk /var/spool/alarm/ usermod -G nagcmd,asterisk nagios vim /usr/local/nagios/libexec/notify-by-phone.sh # (copy and paste above script) chown nagios.nagios /usr/local/nagios/libexec/notify-by-phone.sh chmod 750 /usr/local/nagios/libexec/notify-by-phone.sh vim /usr/local/nagios/etc/objects/contacts.cfg # (copy and paste above config) vim /usr/local/nagios/etc/objects/commands.cfg # (copy and paste above config) /etc/init.d/nagios reload vim /etc/asterisk/extensions.conf # (copy and paste above config) /etc/init.d/asterisk reload В статье не стал указывать как настроить план набора для совершения звонка так как каждый его может собрать так как ему нравиться...
С Уважением