8(499)-709-97-83
Работаем с 8:00 до 19:00

Мониторинг VoIP канала с помощью Zabbix

  • 30 января 2015

Сейчас уже редко найдешь офис, в котором не установлена система мониторинга, cобирающая ежедневные показатели серверов и сетевого оборудования, и отслеживающая статусы различных сервисов. Нам захотелось отслеживать количество успешных вызовов и вызовов с 500 Internal Server Error /503 Service Unavailable релизами. В интернете есть куча платных программ, которые сделают это с легкостью, но мы не ищем легких путей, к тому же, для мониторинга мы уже давно используем Zabbix и не хотелось бы от него отказываться. Собирать статистику по вызовам мы будем с помощью Voipmonitor, после чего с помощью Zabbix агента и скриптов передавать данные на Zabbix сервер, где будут прорисовываться нужные нам графики. Наш метод не претендует на самый правильный и простой, но, может быть, кому-то пригодится и будет полезным. Что мы имеем: сервер CentOS 6.6 с установленным на нем Asterisk 11,Zabbix 2.4,MySQL.

 

Voipmonitor

VoipmonitorOpenSource VoIP снифер, предназначенный для оценки и контроля качества VoIP связи. VoIPmonitor перехватывает вызовы в реальном времени и сохраняет статистику и дампы файлов в БД для последующего анализа. VoIPmonitor использует снифер на базе libpcap, обнаруживает SIP INVITE пакет и перехватывает RTP в обоих направлениях. Далее используется код Jitter буфера Asterisk'а для имитации буфера и получения статистики потери пакетов и джиттера при различных величинах и типах буфера.

Первым делом обновляемся и устанавливаем нужные нам программы и пакеты:

yum groupinstall 'Development Tools'yum install git unixODBC-devel mysql-devel libogg libogg-devel vorbis-tools libvorbis libvorbis-devel libpcap-devel zlib-devel

Переходим в /usr/src/ и скачиваем нужную нам версию снифера

64 bit

wget http://sourceforge.net/projects/voipmonitor/files/10.1/voipmonitor-amd64-10.1.23-static.tar.gz

32 bit

wget http://sourceforge.net/projects/voipmonitor/files/10.1/voipmonitor-i686-10.1.23-static.tar.gz

теперь распаковываем и устанавливаем

tar xzf voipmonitor-*-static.tar.gzcd voipmonitor-*-static./install-script.shcp voipmonitor.conf /etc/mysqladmin create voipmonitor

Теперь отредактируем конфигурационный файл /etc/voipmonitor.conf

Вносим изменения для подключения к нашей базе данных:

mysqlhost = 127.0.0.1mysqlport = 3306mysqlusername = rootmysqlpassword = *******

Указываем какой сетевой интерфейс и порт должен слушать снифер (в нашем случае все вызовы ходят через 5080):

interface = eth0sipport = 5080

По умолчанию снифер сохраняет весь sip и rtp трафик в pcap файлы. Нам данный функционал не нужен, так что его надо отключить:

savesip = nosavertp = nosaveudptl = nosavertcp = no

Конфигурационный файл сопровождается очень хорошим описанием, так что при желании можно гибко настроить все под себя. Сохраняем настройки и запускаем программу

/etc/init.d/voipmonitor start

После запуска в MySQL будет создана база данных voipmonitor с различными таблицами.


Более подробно о структурах таблиц можно посмотреть тут. В нашем случае нам потребуются данные только из таблицы cdr. Теперь напишем небольшой скриптик, который будет вытягивать из базы данных voipmonitor и таблицы cdr вызовы, завершенные 500 и 503 релизом.


Создадим Bash скрипт InternalServer.sh со следующим содержимым:

#!/bin/bashU="root"B="voipmonitor"echo "select count(lastSIPresponseNum) from cdr WHERE calldate >= NOW() - INTERVAL 5 MINUTE and lastSIPresponseNum like '500' GROUP BY lastSIPresponseNum;" | mysql -N -s -u $U $B


Небольшие пояснения:

U="root" - логин для подключения к Mysql

B="voipmonitor" - База данных

select count(lastSIPresponseNum) from cdr WHERE calldate >= NOW() - INTERVAL 5 MINUTE and lastSIPresponseNum like '500' GROUP BY lastSIPresponseNum;" – выводит кол-во вызовов за последние 5 минут завершенные 500 релизом.


Создадим еще один скрипт ServiceUnavailable.sh, указав там lastSIPresponseNum like '503'

Даем право на исполнение нашим скриптам

chmod 777 internalserver.shchmod 777 serviceunavailable.sh
 

Переходим к установке и настройке Zabbix агента.

Если Zabbix agent не установлен, устанавливаем

rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpmyum install zabbix-agent

и переходим к настройкам агента:

nano /etc/zabbix/zabbix_agentd.conf

переходим в секцию Option: UserParameter и добавляем наши параметры и прописываем путь до наших скриптов

UserParameter=internalserver,/usr/src/internalserver.shUserParameter=serviceunavailable,/usr/src/serviceunavailable.sh

Еще нам нужно выводить кол-во активных вызовов, так что добавим еще вот такую строчку:

UserParameter=asterisk.activecalls,sudo rasterisk -x "core show calls" | grep "active" | cut -c 1-2
 

Теперь нужно разрешить zabbix выполнять команды sudo. Переходим /etc/sudoers и добавляем строку.

zabbix ALL = NOPASSWD: /usr/sbin/asterisk
 

Рестартим Zabbix агент

/etc/init.d/zabbix-agent restart
 

Настройка сервера Zabbix

В веб-панели Zabbix заходим в Настройки -> Шаблоны, создаем пустой шаблон и называем его, например, VoIP monitoring. Заходим в редактирование шаблона и переходим в раздел “Элементы данных” . Нажмите на “Создать элемент данных” в правом верхнем углу экрана, в форме введите следующие параметры:

                                            

Теперь переходим в раздел Графики, нажимаем на кнопку “Создать график” и заполняем поля следующим образом:

        

Все сохраняем и к нужному узлу сети добавляем наш шаблон.

На этом наша настройка закончена, теперь мы можем в графическом виде наблюдать состояние VoIP канала и оперативно реагировать на проблемы с прохождением вызовов.

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)