Падает регистрация транков на Asterisk

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

Телефоны не звонят, сотрудники нервничают. Так как проблему нужно решить незамедлительно и времени анализировать логи не было, пришлось выкрутиться следующим временным решением (вместо username нужно подставить имя вашего sip канала).
Проверяем в наличие описании транка строки qualify=yes в файле /etc/asterisk/sip.conf. Далее выполняем в консоли команду меняя username на название вашего канала:
asterisk -rx 'sip show registry' | grep username| awk '{print $5}' | grep Registered || asterisk -rx 'sip reload'

Что здесь происходит: сначала мы проверяем состояние зарегистрированных SIP каналов, потом отбираем строчки с нужным нам именем канала (username - чаще всего номер телефона), затем выводим только содержимое 5-ого столбца (состояние канала), далее проверяем равно ли оно статусу Registered. Если состояние канала отличается от Registered, то модуль регистрации SIP перезапускается, после чего канал поднимается.

Проверять состояние канала и перезапускать при необходимости SIP мы можем, например, раз в 10 минут. Для этого добавим выполнение команд в crontab.

sudo nano /etc/crontab
*/10 *  * * *   root    asterisk -rx 'sip show registry' | grep 555555 | awk '{print $5}' | grep Registered || asterisk -rx 'sip reload'

Еще один вариант - написать скрипт:
#!/bin/bash
status=`asterisk -rx "sip show peer 555555" | grep Status | grep OK`
if [[ $status ]]; then
   exit 0
else
 asterisk -rx "sip reload"
fi
Конечно, это временное решение, и нужно решать проблему глобально, т.е. разбираться, почему происходит падение канала. Но в случае отсутствия времени или возможность разобраться, такой вариант может спасти вашу ситуацию.

Комментариев нет:

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