Привет! У меня стоит * на FreeBSD. Пробовал такой скрипт, чтобы пришло сообщение о том, что * упал. По началу все было ок, потом даже когда * работал, сообщения валились на почту.
if ! ps aux | grep asterisk | grep -v grep; then echo "It's down!! AAA!!" | mail -s "Asterisk down!" "mail@mail.com" fi
Есть еще варианты, как проверять работает и * и как-то информировать меня, если не работает?
Запускать * как дочерний процесс следящего скрипта. По возврату управления в следящий процесс слать письмо, что все плохо и бить в бубен.
Вариант №2 - использовать скрипт safe_asterisk или собственные модификации "на тему".
Поставиль на своём компе X-Lite, создать для него аккаунт и если высветится сообщение, что связ с сервером пропала, значит * упал.
ну раз все так бурно взялись за правильный мониторинг то тогда использовать надо Zabbix
Его можно натравить на мониторинг
1) Процесса
2) порт 5060 , 5038 ....
3) количество запущенных процессов asterisk
и конечно посылать уведомления(SMS, jabber, email)
X-lite тихо курит по сравнению с zabbix-ом :)
Используйте технологию Intel V-Pro, можете удаленно включать и выключать машину и не только.
я делаю напримепр так линфон стоит на временирегистрации 60 секунд, дальше ве оч просто nohup linphonec > /var/log/aststat &
и скриптик такого вида
a=1
while (($a > 0))
do
cat /dev/null > /var/log/aststat
sleep 60
cat /var/log/aststat|grep successful > v3
ARGS=2
cmp v3 v5 &> /dev/null
if [ $? -eq 0 ]
then
cat /dev/null
else
echo "Alarm" (ну здесь может быть что угодно - отправка письма, смс, играние похоронного марша и т. д.)
fi
Да... еще кое что при первом старте скрипта, над выдрать строку linphonec> Registration on sip:X.X.X.X successful. из лога aststat и кинуть в файл v5 в папку со скриптом.
cat /usr/sbin/safe_asterisk
#!/bin/sh
# vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindent
CLIARGS="$*" # Grab any args passed to safe_asterisk
TTY=9 # TTY (if you want one) for Asterisk to run on
CONSOLE=yes # Whether or not you want a console
NOTIFY= mail@mail.ru # Who to notify about crashes
#EXEC=/path/to/somescript # Run this command if Asterisk crashes
MACHINE=`hostname` # To specify which machine has crashed when getting the mail
DUMPDROP=/tmp
SLEEPSECS=4
ASTSBINDIR=/usr/sbin
ASTPIDFILE=/var/run/asterisk.pid
по моему так проще
логика такая
[test] exten => s,1,Answer exten => s,2,Playback(testfile.wav) exten => s,3,Wait(1) exten => s,3,Hangup [test2] exten => s,1,Set(CDR(userfield)=${uniq_key}) exten => s,2,Record(testfile2.wav) exten => s,3,Hangup
дальше генриться кол файлик звоняший с одного на другой, с переменной uniq_key, через 20 секунд проверятся в базе наличие cdr за последние 5 минут с этим userfield. если нету, проверяеться еше раз через 2 сек, и пишется писмецо, а астриск убиваеться через kill -9.
по возможности звониться с одного на другой контекс через внешний сервер(проверяеться sip). после чего скрипт проверяет файлик на наличие в нем звука(тест файлик выдает две ноты по 5 секунд каждая, проверка елементарная на наличие уровней в фалике).
тоесть, вы проверили 1) астриск совершает звонки 2) внешние каналы работают 3) звук идет.
Может стоит разобраться вообще с причиной почему падает? Вообще это не есть нормально IMHO.. Скажем запустить через strace хотяб.
Nagios - панацея http://www.voip-info.org/wiki/view/Asterisk+monitoring
Задан: 2011-01-24 13:31:57 +0400
Просмотрен: 3,288 раз
Обновлен: Mar 19 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.