Эта статья о том как подключить Nagios к Asterisk
Для чего всё это надо? Идея состоит в том, чтобы получать автоматичские уведомления на телефон при срабатывании пробников.
Итак, приступаем.
Создадим темплейт контакта:
… define contact{ name contact-by-sip ; The name of this contact template service_notification_period 24x7 ; service notifications can be sent anytime host_notification_period 24x7 ; host notifications can be sent anytime service_notification_options c ; critical host_notification_options d ; down
service_notification_commands notify-service-by-sip ; send service notifications via sip host_notification_commands notify-host-by-sip ; send host notifications via sip register 0 ; ITS NOT A REAL CONTACT, JUST A TEMPLATE! } ... |
И сам контакт:
define contact{ contact_name nagios-sip use contact-by-sip alias Nagios Sip email Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. address2 SIP/37327@cucm1 } |
Команда нотификации:
define command{ command_name notify-host-by-sip command_line $USER1$/notify-by-sip.sh $CONTACTADDRESS2$ "HOST" $NOTIFICATIONTYPE$ $HOSTNAME$ H_$HOSTEVENTID$ }
define command{ command_name notify-service-by-sip command_line $USER1$/notify-by-sip.sh $CONTACTADDRESS2$ "SERVICE" $NOTIFICATIONTYPE$ $HOSTALIAS$ S_$SERVICEEVENTID$ } |
И описание сервиса:
define service{ use my_graph-service-template-1min host_name test.ru service_description PING check_command check_ping!200.0,20%!500.0,60% contacts nagios-sip max_check_attempts 5 } |
Исходящий вызов будем совершать с использованием так называемых ".call" файлов. Это текстовые файлы, которые надо поместить в директорию outgoing на сервере астериска, которая в настройках Asterisk прописана так чтобы совершить исходящий вызов автоматически. Однако настройка asterisk не тема этой статьи.
Пример скрипта, генерирующего файл .call приведен ниже. Также приведен пример экстена (exten) для Asterisk.
#!/bin/bash channel=$1 alarm_hs=$2 alarm_type=$3 alarm_hostname=$4 alarm_id=$5 mytmpfile=`mktemp /tmp/nagios_call/nagios_$alarm_id.XXXX` mytmpfile=$mytmpfile."call" file_name_only=`echo $mytmpfile | sed -e 's/.*\///g'` CDR=`echo $channel | sed -e 's/.*\///g' | sed -e 's/@.*$//g'`
if [ "$alarm_type" = "ACKNOWLEDGEMENT" ] then echo `date` >> /tmp/nagios_call/logging.txt echo "$alarm_hs, $alarm_type, $alarm_hostname" >> /tmp/nagios_call/logging.txt exit 0 fi
if [ "$alarm_hs" = "SERVICE" ] then data_wav="otkaz_servisa_na_servere" fi if [ "$alarm_hs" = "HOST" ] then data_wav="otkaz_servera" fi
echo "Channel: $channel CallerID: ALARM MaxRetries: 5 RetryTime: 10 WaitTime: 23 Account: callback_nagios Context: callback_nagios Extension: 911 Priority: 2 Set: file=$data_wav&$alarm_hostname AlwaysDelete: Yes Archive: Yes" > $mytmpfile
host="ip address" port="21" user="nagios" pass="passsword" file="$mytmpfile" ufile="//$file_name_only"
echo "put $file $ufile" >> /tmp/nagios_call/test_script.txt
echo `date` >> /tmp/nagios_call/logging.txt echo "$alarm_type" >> /tmp/nagios_call/logging.txt echo " verbose open $host user $user $pass bin put $file $ufile bye " | ftp -n >>/tmp/nagios_call/logging.txt 2>&1 & |
В Asterisk примерно следующее:
[callback_nagios] exten => 911,1,Answer exten => 911,2,Playback(/var/spool/alarm/${file}) exten => 911,3,Hangup
|
Другая статья о настройке системы оповещения Nagios через Asterisk
Обновлено 06.04.2016 21:53