Мониторинг состояния транков Asterisk

Советы и подсказки по софту, работе в операционных системах, комплектующих и сборок компьютеров.
Аватара пользователя
toxi
Администратор
Администратор
Articles: 0
Сообщения: 504
Зарегистрирован: 12-04-2008 07:58:25
Ваш пол: Мужской
Имя: Роман
Откуда: Украина, г. Житомир
Контактная информация:

Мониторинг состояния транков Asterisk

Сообщение toxi »

Иногда есть необходимость мониторинга транков, а если этот процесс еще и автоматизировать, то получается вполне себе неплохой инструмент администрирования.

* Скрипт дополнен кодом для отправки сообщения в Телеграм.

И так, что же нам понадобится для создания такого инструмента?! Совсем немного: знание команд линукса, астериска и чуть-чуть логического мышления.
Если коротко, то скрипт будет работать так:

1. Смотрит статус транков
1.1546008469_feature_image.png
1.1546008469_feature_image.png (5.36 КБ) 35 просмотров
2. Проверяет сколько транков в системе
2.1546008469_feature_image-1.png
2.1546008469_feature_image-1.png (4.44 КБ) 35 просмотров
3. Ищет проблемные транки и если находит то пробует «починить» их (и отправляет на email оповещение), если все ок то спим спокойно дальше.

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

#!/bin/bash

# Задаем переменные
ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`"

# Смотрим статусы транков
ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'`

# Смотрим сколько всего транков в системе
REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l`

# Зарегистрированные  транки (все транки со статусом Registered)
# Задаем условие
if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then

# Если есть хоть один проблемный транк (В одном или более транке встретился статус отличный от Registered) то
sleep 5 # Ждем 5 секунд

echo `/usr/sbin/asterisk -rx "sip reload"` # Делаем sip reload
sleep 5 # Ждем 5 секунд

VAR=`/usr/sbin/asterisk -rx "sip show registry"` # Смотрим статусы транков после проверки

# Уведомляем на почту о том какие статусы стали после проверки
echo "$VAR" | mail -s "Мониторинг транков FreePBX" email@server.mail  # Если условие ложно (т.е. с  транками все хорошо)

# Telegram Messages
token='67xxxxxxx:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # Токен
chat="22xxxxxxx" # Ваш ID в Телеграм
subj="Мониторинг транков FreePBX" # Тема
message="$VAR" # Текст сообщения

/usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot67xxxxxxx:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sendMessage"
# Telegram Messages

else  echo “ALL STATUS OK” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше
Теперь остается добавить скрипт в cron и настроить его на выполнение каждые 2-3 минуты (минимально 1 минута).

Должно получится примерно следующее, где
*/2 * * * * означает что скрипт будет выполняться каждые две минуты
/usr/local/bin/test.sh директория где находится сам скрипт (убедиться что скрипт имеет права на запуск)
> /dev/null 2>&1 используется для подавления нежелательного вывода в консоль.
3.1546008469_feature_image-2.png
3.1546008469_feature_image-2.png (1.71 КБ) 35 просмотров
И так, мы рассмотрели элементарный скрипт который мониторит статусы транков, и делает sip reload если что-то не так и сообщает об этом на нужный email.
Основываясь на этом примере, можно создать более сложный скрипт, который будет делать несколько проверок, при чем статусы Request Sent или Auth. Sent в первой проверке он будет считать нормальными и лишь на второй или третей проверке будет делать sip reload для этих статусов. Все зависит от вашей фантазии, можно добавить в скрипт отсылку письма в суппорт вашему оператору, в котором будут необходимые данные из скрипта и заранее подготовленный текст для открытия заявки.

Скачать скрипт:
sip_trunk_check.txt
(1.98 КБ) 2 скачивания
Источник: https://voxlink.ru/kb/asterisk-configur ... te-monitor
Правила форума :: Выполняем сканирование сайтов на наличие вредоносного кода, обращайтесь либо задавайте вопросы в тикет.