Иногда есть необходимость мониторинга транков, а если этот процесс еще и автоматизировать, то получается вполне себе неплохой инструмент администрирования.
* Скрипт дополнен кодом для отправки сообщения в Телеграм.
И так, что же нам понадобится для создания такого инструмента?! Совсем немного: знание команд линукса, астериска и чуть-чуть логического мышления.
Если коротко, то скрипт будет работать так:
1. Смотрит статус транков
- 1.1546008469_feature_image.png (5.36 Кіб) Переглянуто 642 разів
2. Проверяет сколько транков в системе
- 2.1546008469_feature_image-1.png (4.44 Кіб) Переглянуто 642 разів
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 protected] # Если условие ложно (т.е. с транками все хорошо)
# 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 (1.71 Кіб) Переглянуто 642 разів
И так, мы рассмотрели элементарный скрипт который мониторит статусы транков, и делает sip reload если что-то не так и сообщает об этом на нужный email.
Основываясь на этом примере, можно создать более сложный скрипт, который будет делать несколько проверок, при чем статусы Request Sent или Auth. Sent в первой проверке он будет считать нормальными и лишь на второй или третей проверке будет делать sip reload для этих статусов. Все зависит от вашей фантазии, можно добавить в скрипт отсылку письма в суппорт вашему оператору, в котором будут необходимые данные из скрипта и заранее подготовленный текст для открытия заявки.
Скачать скрипт:
Источник: https://voxlink.ru/kb/asterisk-configur ... te-monitor
[i]Иногда есть необходимость мониторинга транков, а если этот процесс еще и автоматизировать, то получается вполне себе неплохой инструмент администрирования.[/i]
[b]* Скрипт дополнен кодом для отправки сообщения в Телеграм.[/b]
И так, что же нам понадобится для создания такого инструмента?! Совсем немного: знание команд линукса, астериска и чуть-чуть логического мышления.
Если коротко, то скрипт будет работать так:
1. Смотрит статус транков
[attachment=3]1.1546008469_feature_image.png[/attachment]
2. Проверяет сколько транков в системе
[attachment=2]2.1546008469_feature_image-1.png[/attachment]
3. Ищет проблемные транки и если находит то пробует «починить» их (и отправляет на email оповещение), если все ок то спим спокойно дальше.
[code]
#!/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 protected] # Если условие ложно (т.е. с транками все хорошо)
# 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” # Просто выводим что со всеми статусами все хорошо и ничего не делаем больше
[/code]
Теперь остается добавить скрипт в cron и настроить его на выполнение каждые 2-3 минуты (минимально 1 минута).
Должно получится примерно следующее, где
*/2 * * * * означает что скрипт будет выполняться каждые две минуты
/usr/local/bin/test.sh директория где находится сам скрипт (убедиться что скрипт имеет права на запуск)
> /dev/null 2>&1 используется для подавления нежелательного вывода в консоль.
[attachment=1]3.1546008469_feature_image-2.png[/attachment]
И так, мы рассмотрели элементарный скрипт который мониторит статусы транков, и делает sip reload если что-то не так и сообщает об этом на нужный email.
Основываясь на этом примере, можно создать более сложный скрипт, который будет делать несколько проверок, при чем статусы Request Sent или Auth. Sent в первой проверке он будет считать нормальными и лишь на второй или третей проверке будет делать sip reload для этих статусов. Все зависит от вашей фантазии, можно добавить в скрипт отсылку письма в суппорт вашему оператору, в котором будут необходимые данные из скрипта и заранее подготовленный текст для открытия заявки.
Скачать скрипт: [attachment=0]sip_trunk_check.txt[/attachment]
[right][i]Источник: https://voxlink.ru/kb/asterisk-configuration/trunkstate-monitor[/i][/right]