Asterisk и Nagios

Полезные ссылки, документация и тп.

Модераторы: Admins, Модераторы

Ответить
kinder
Сообщения: 77
Зарегистрирован: 09 апр 2008, 08:30

Asterisk и Nagios

Сообщение kinder » 15 дек 2009, 17:41

И так начнем. Потребовалось мониторить сервисы с помощью 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

Код: Выделить всё

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   user@mail.ru
        address2        local/1@test
}
Можно доработать...


После потребуется создать 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
}
Service

Код: Выделить всё

# 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
}
Обратите внимание на то что host_name должен совпадать в hoste и service///

Далее создаем скрип для создания звонка...

Код: Выделить всё

#!/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/906XXXXXXX@test
MaxRetries: 4
RetryTime: 30
WaitTime: 30
Context: alarm
Extension: s
Priority: 1
callerid:40
Set: alarmid=$alarmid" > alarm1$alarmid.call

echo "Channel: local/8918XXXXXXX@test
MaxRetries: 4
RetryTime: 30
WaitTime: 30
Context: alarm
Extension: s
Priority: 1
callerid:40
Set: alarmid=$alarmid" > alarm2$alarmid.call

echo "Channel: local/8928XXXXXXX@test
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
Изменение и добавление user для обзвона лучше делать в скрипте. ИМХО

ААА и еще забыл сообшать нам потребуеться 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
Выполняем все эти действия! Запускаем, * запускаем nagios/ Тушим любой host и после ждем звонка на мобильник или рабочий телефон.



В статье не стал указывать как настроить план набора для совершения звонка так как каждый его может собрать так как ему нравиться...

С Уважением

Аватара пользователя
anest
Модератор
Сообщения: 5633
Зарегистрирован: 28 ноя 2004, 10:04

Сообщение anest » 15 дек 2009, 20:15

зачёт! :good:

Аватара пользователя
noize
Сообщения: 913
Зарегистрирован: 29 ноя 2006, 12:51
Откуда: Москва

Сообщение noize » 16 дек 2009, 10:21

добавлю от себя, что чекать астериск можно с помощью софтинки под названием Sipsak. Она позволяет посылать запросы INVITE и REGISTER, на основе ответов которых можно сообщать нагиусу о работоспособности или сбое астериска.

terminal
Сообщения: 219
Зарегистрирован: 20 ноя 2008, 13:04

Сообщение terminal » 16 дек 2009, 10:36


Аватара пользователя
belkin
Сообщения: 163
Зарегистрирован: 05 фев 2008, 17:59
Откуда: Moscow
Контактная информация:

Сообщение belkin » 18 дек 2009, 13:26

внесу свои 5 копеек.
также можно очень просто рисовать графики через munin
в дебиане apt-get install munin munin-node и на оф саите посмотреть дополнительные плагины к астеру
чекает:
количество пиров, количество каналов(делит по кодекам), и еще что то.

не центосе почти так же .

пример тут
http://nerdvittles.kicks-ass.net/munin/ ... l#Asterisk

kinder
Сообщения: 77
Зарегистрирован: 09 апр 2008, 08:30

Сообщение kinder » 19 дек 2009, 12:47

Это все реализовано в cacti.
Можно рисовать почти все что нужно.
Могу так же отписать как это реализовал!

beba
Сообщения: 232
Зарегистрирован: 29 июл 2006, 11:58
Откуда: Беларусь

Сообщение beba » 19 дек 2009, 13:37

так же в cacti графики рисую..

mihail
Сообщения: 42
Зарегистрирован: 23 ноя 2009, 14:21

Сообщение mihail » 27 янв 2010, 16:56

опишите как реализованно в какти ... подумываю реализовать мониторинг
заранее спасибо

kinder
Сообщения: 77
Зарегистрирован: 09 апр 2008, 08:30

Сообщение kinder » 28 янв 2010, 11:05

Вот скрипт для cacti там же есть Templates для cacti. Так же есть небольшая инструкция для установки скрипта и его настройки.
На * требуется добавить user для AMI в файле manager.conf

[user]
secret = user
read = command
write = command
deny = 0.0.0.0/0.0.0.0
permit = 192.168.0.0/255.255.255.0
У вас нет необходимых прав для просмотра вложений в этом сообщении.

logdog
Сообщения: 285
Зарегистрирован: 01 сен 2008, 18:14

Сообщение logdog » 30 ноя 2011, 19:35

я вот понять не могу, для аналоговой линии что делать? ...
Мы прослушать сообщение не сможем ... так как оно будет проговариваться в канал, как раз в то время, когда пойдёт звонок ...

latv
Сообщения: 333
Зарегистрирован: 01 ноя 2008, 10:53
Контактная информация:

Сообщение latv » 01 дек 2011, 09:23

Интересно тема развивается. Началось с того, как использовать Астериск в мониторинге, продолжилась тем, как мониторить сам Астериск, а сейчас опять вернулась к использованию астериска =)

В незерегистрированной версии tts движка в начале сгенерированного файла звучит предупреждение. Его можно отрезать =)

Код: Выделить всё

sox /tmp/hello.wav /tmp/hello_cut.wav trim 00:08

Ответить