Pull to refresh

Оповещения из Zabbix телефонным звонком

Reading time 2 min
Views 16K
Всем привет.
Я давно использую zabbix и давно читаю хабр.

Мысль научить заббикс разговаривать голосом посещала меня давно, и даже делал систему которая чудным голосом сообщала ночным саппортам что случилось.
Сегодня я прочитал пост mxx про nagios`ом по телефону и меня срочно настигла мысль привинтить это к моей системе.

Через два с половиной часа все заработало, а поскольку в комментах к оригинальному посту просили такое решение, то я его тут опубликую.



Итак:
Шаг №1 — Пререквизиты. Ставим festival и pjsip
sudo aptitude install festival


pjsip (см. пост mxx)

Шаг №2 — Конфиг zabbix_server
zabbix@zabbix-new:~$ grep AlertScript /etc/zabbix/zabbix_server.conf 
### Option: AlertScriptsPath
AlertScriptsPath=/home/zabbix/bin/


Шаг №3 — скрипты заббикса
zabbix@zabbix-new:~$ cat /home/zabbix/bin/sipalarm 
#!/bin/bash
HOME=/home/zabbix
SPOOL=$HOME/spool
STAMP=`date +%s`

add_to_spool () {
	text2wave <(echo $2) > $SPOOL/$STAMP$1.wav
}

add_to_spool "$1" "$2"
$HOME/bin/sipnd &


zabbix@zabbix-new:~$ cat /home/zabbix/bin/sipnd    
#!/bin/bash
HOME=/home/zabbix
SPOOL=$HOME/spool
die () {
	echo "$1"
	exit 0
}
check_lock () { 
	test -e $HOME/sipnd.lock && die "already running"
}
get_lock () {
	echo $$ > $HOME/sipnd.lock
}
drop_lock () {
	rm $HOME/sipnd.lock
}

check_lock; get_lock
for i in $SPOOL/*.wav; do
	TMP=${i##*+}
	PHONE=+${TMP%%.wav}
	echo "DEBUG: pjsua --config-file=/etc/pjsua.cfg --play-file=$i sip:$PHONE@sipnet.ru --auto-play"
	( sleep 60 && echo q ) | pjsua --config-file=/etc/pjsua.cfg --play-file=$i sip:$PHONE@sipnet.ru --auto-play
	wait
	rm $i
done
drop_lock



Шаг №4 — Настройка оповещений
Сначала добавить новое средство оповещения


Потом дать какому то пользователю адрес (в нашем случае номер мобильника)


И в настройках Action прописать доставку оповещения этому пользователю свежеопределенным средством.


Внимание:
* — знак + в номере важен
* — zabbix будет проговаривать только заголовок триггера (соответственно заголовок должен быть содержательным).
* — в настройках pjsua выставить адекватный параметр duration (чтобы успеть 2-3 раза послушать сообщение).
* — алармы собираются в пул и потом доставляются по одному (1-2 минуты на 1 аларм, при рассылке на 10 человек последний будет получать звонок сильно с опозданием).
* — используйте зависимости триггеров — иначе задолбает звонить.
* — только английский, русский привинтить можно, но я не хочу.
* — на написание топика ушло больше времени чем на всю систему, если что не заметил добро пожаловать в комментарии.
Tags:
Hubs:
+23
Comments 9
Comments Comments 9

Articles