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

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

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

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

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

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

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

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

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

мониторинг транков

(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«:

мониторинг транков

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

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

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

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

Читайте также:  Freepbx. Уведомление о пропущенных звонках.

Скопируйте файл скрипта в папку на сервере 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. Мониторинг транков. 1

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

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

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

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

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

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

 

Поделиться ссылкой:

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.