FreePBX мониторинг транков SIP и PJSIP.

FreePBX Мониторинг транков. Мониторим состояние транков.

При эксплуатации IP-телефонии случаются ситуации, когда транки к провайдеру телефонии переходят из нормального состояния Registered в незарегистрированное состояние. Это является одной из причин неработоспособности телефонии и поступления жалоб от пользователей. Конечно, хорошо, чтобы администратор мог, как можно быстрее, узнать о проблеме, а лучше исправить ее без личного вмешательства.

Как правило, проблема с отсутствием регистрации нормально работающих транков «лечится» перезапуском модуля sip или pjsip, а для этого достаточно небольшого скрипта, который будет мониторить состояние транков и при необходимости перезагружать указанные модули.

К делу. В сети мне удалось найти скрипты только для мониторинга SIP транков, ну а «допилить» их для PJSIP было делом техники.)

Скрипт для мониторинга SIP транков.

Ниже размещен скрипт, найденный на этом сайте.

Еще:  Asterisk(FreePBX). Как удалить записи разговоров с помощью скрипта.

Немного опишу, что делает скрипт:

  1. Помещает в переменную ALLTRUNKSMINIMUM  вывод команды «sip show registry»
  2. Помещает в переменную ALLTRUNKS количество транков в системе

FreePBX Мониторинг транков. sip show registry

(grep находит строку 2 SIP registrations, а команда awk ‘{print $1}’ выбирает слово(число и т.д.) в первой позиции этой строки.

3. Помещает в переменную REGTRUNKS количество транков со статусом Registered(grep выбирает строки со словом Registered, а команда wc -l показывает количество строк, отобранных командой grep).

4. Ну и дальше идет сравнение общего количества транков с количеством зарегистрированных, и в зависимости от результата, либо перезагружает модуль sip и отправляет письмо на указанную почту со статусами транков после перезагрузки модуля, либо просто выводит в консоль сообщение, что всё ОК.

Скрипт для мониторинга PJSIP транков.

На основе вышеописанного скрипта можно создать скрипт для мониторинга PJSIP транков. Отличие состоит лишь в том, что используется команда «pjsip show registrations«(у нее немного отличается вывод) и перезагружать нужно модуль pjsip, соответственно.

Вот вывод команды «pjsip show registrations«:

FreePBX Мониторинг транков. pjsip show registrations

Как видно, нужно искать уже строку, содержащую «Objects found» и количество транков находится уже не в первой, а в третьей позиции.

Исходя из этого скрипт приобретет следующий вид:

Еще:  FreePBX wav to mp3. Конвертируем записи звонков.

Автоматический запуск скриптов.

Ну что же, скрипты готовы, осталось заставить их выполнять свои задачи по расписанию. Для этого нужно сохранить их с расширением .sh, например, sip_trunks.sh и pjsip_trunks.sh, конвертировать в unix-формат и создать задание в cron.

Скопируйте файл скрипта в папку на сервере FreePBX(Asterisk). При помощи команды dos2unix конвертируйте в нужный формат:

dos2unix /home/scripts/sip_trunks.sh

Разрешим выполнение скрипта:

chmod +x /home/scripts/sip_trunks.sh

Теперь откроем на редактирование файл crontab командой crontab -e и внесем туда следующее:

Это значит, что скрипт будет запускаться каждые две минуты.

По умолчанию, crontab открывается в редакторе по умолчанию(обычно это vim). Если вам привычнее использовать другой редактор, можно открыть файл в нём:

Сохраните файл после редактирования. Теперь ваши транки будут под присмотром.))

P.S

Для мониторинга транков с помощью zabbix нужно в скрипте перед выполняемыми командами типа /usr/sbin/asterisk -rx «sip show registry добавить /usr/bin/sudo. Также, нужно добавить пользователя zabbix в файл /etc/sudoers. Делается это при помощи команды visudo. В файл нужно добавить строку:

zabbix ALL = NOPASSWD: /usr/sbin/asterisk

Должно получиться так:

FreePBX Мониторинг транков. visudo

После этого нужно в файле конфигурации zabbix-agent добавить следующее:

UserParameter=asterisk.trunk,/etc/zabbix/scripts/asterisk.trunk.sh

где asterisk.trunk — ключ, по которому сервер zabbix будет получать данные от агента

а /etc/zabbix/scripts/asterisk.trunk.sh — путь к скрипту мониторинга.

После сохранения изменений в файле, перезапустите zabbix-agent командой:

Посмотреть, какое значение отправляет агент на сервер можно так:

 

4 комментария к “FreePBX мониторинг транков SIP и PJSIP.”

  1. Спасибо за дельную инструкцию! А как можно сделать, чтобы в случае core reload, вместо отправки почты, отправлялось сообщение по jabber (xmpp). В Asterisk jabber стоит как аппликация, к сожалению из CLI сообщения не отправляет. Очень буду услышать ответ !

  2. Спасибо за ответ! jabber + asterisk использую давно, приходят уведомления, все работает ок.
    Просто тут сложность возникла, что XMPP в asterisk это как аппликация, которую невозможно запустить из CLI.
    Кстати, у меня скрипт работает, но каждый 2 минуты приходит емейл. А можно ли его изменить, чтобы только в случае успешного core reload, т.е. равенство всего транков и зарегистрированных приходил емейл?

  3. Можете изменить скрипт под свои нужды(задать условие, при котором будут отправляться сообщения). У меня сообщения приходят только, когда выполняется условие, что количество зарегистрированных транков меньше, чем их общее количество. Если с транками всё в порядке, сообщения не приходят.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх