Александр Мисюрин
25.07.2019
19458

Настройка Zabbix агента, для мониторинга данных АТС (скрипты)

В данной статье рассмотрим настройку агента Zabbix (клиент), для мониторинга состояния АТС, в частности написание скриптов мониторинга состояния как самого сервера (память, процессор), так и состояние Asterisk (пиры, транки). Установим сам агент: Затем в файле конфигурации /etc/zabbix/zabbix_agentd.conf, укажем адрес сервера и имя нашего хоста. Server=<IP> ServerActive=<IP> Hostname=<hostname> После внесения настроек, перезагружаем агента: Service zabbix-agentd restart […]

В данной статье рассмотрим настройку агента Zabbix (клиент), для мониторинга состояния АТС, в частности написание скриптов мониторинга состояния как самого сервера (память, процессор), так и состояние Asterisk (пиры, транки).

!Настройки проводились на следующем сервере: CentOs 6.9, Asterisk 13.21, FreePBX 14.

Установим сам агент:

yum install zabbix-agent

Затем в файле конфигурации /etc/zabbix/zabbix_agentd.conf, укажем адрес сервера и имя нашего хоста.

Server=<IP>

ServerActive=<IP>

Hostname=<hostname>

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

Service zabbix-agentd restart

И добавляем его в автозапуск:

chkconfig zabbix-agentd on

Далее решим что мы будем получать от агента.

  1. Статусы служб: mysql, httpd, asterisk
  2. Статус памяти сервера (диск)
  3. Нагрузку на процессор
  4. Количество подключенных пиров в нескольких вариантах
  5. Статус регистраций транков

Статусы служб

Проверять запущена или нет служба будем с помощью bash скриптов, для каждой службы – свой, чтобы иметь возможность мониторить их отдельно на сервере Zabbix.

Проверка mysql:

Mysql.sh

#!/bin/sh
mysql=`/etc/init.d/mysqld status`
string=`expr "$mysql" : '.*\(not running\).*'`
if [ "$string" = "not running" ]
then
	echo 0
else
	echo 1
fi

Проверка http:

Httpd.sh

#!/bin/sh
httpd=`/etc/init.d/httpd status`
string=`expr "$httpd" : '.*\(not running\).*'`
if [ "$string" = "not running" ]
then
	echo 0
else
	echo 1
fi

Проверка Asterisk:

Aster.sh

#!/bin/sh
aster=`/etc/init.d/asterisk status`
string=`expr “$aster” : ‘.*\(not running\).*’`
if [ “$string” = “not running” ]
then
	echo 0
else
	echo 1
fi
Возвращаемые значения

Скрипт вернет 1, если служба запущена и 0, если нет.

Далее необходимо прописать обращение к ним, в файле /etc/zabbix/zabbix_agentd.conf в разделе UserParameter:

UserParameter=mysql,/etc/zabbix/scripts/mysql.sh
UserParameter=httpd,/etc/zabbix/scripts/httpd.sh
UserParameter=aster,/etc/zabbix/scripts/aster.sh

И перезапустим службу: service zabbix_agentd restart

Теперь можно проверять работу через агента:

zabbix_agentd –t <имя скрипта>

Запуск через агента

Статус памяти сервера

Также получаем через скрипт bash:

Free.sh

#!/bin/sh
free=`/bin/df -h | grep "/dev/sdb1" | awk '{print $5}'`
echo $free
!Для нескольких дисков придется делать несколько скриптов или выводить через какой либо разделитель, например: /dev/sdb1-92%*/dev/sda1/-15%*/dev/sdc1/-32%

Нагрузка на процессор

Получать будем, вычитая из 100% время простоя процессора (можно просто возвращать простой):

Proc.sh

#!/bin/sh
proc=`/usr/bin/top -bn1 | grep Cpu | awk '{print $5}'`
proc=${proc%%\%id,}
echo $(echo 100 $proc | awk '{print $1-$2}')

Количество подключенных пиров

Возвращать можно в нескольких вариантах:

  1. Подключенные,
  2. Неподключенные,
  3. Оба варианта через разделитель.

Рассмотрим все варианты:

  1. Ok.sh – возвращает все пиры в состоянии ОК
#!/bin/sh
peersok=`/usr/sbin/asterisk -rx 'sip show peers' | grep -E "^\<[0-9]{4}\>" | grep -c OK`
echo $peersok

2. Notok.sh – соответственно все неподключенные

#!/bin/sh
peersnotok=`/usr/sbin/asterisk -rx 'sip show peers' | grep -E "^\<[0-9]{4}\>" | grep -vc OK`
echo $peersnotok

3. В данном варианте просто комбинируем оба запроса и выводим через разделитель:

Peers.sh

#!/bin/sh
ok=`asterisk -rx 'sip show peers' | grep -E "^\<[0-9]{4}\>" | grep -c OK`
notok=`asterisk -rx 'sip show peers' | grep -E "^\<[0-9]{4}\>" | grep -vc OK`
echo $ok/$notok
!Маска во всех способах указывает на номера длиной 4, для вашей системы может отличаться.

Статус транков

Возвращать можно как конкретное число незарегистрированных транков, так и какой либо статус.

 Trunks.sh – возвращаем число незарегистрированных транков

#!/bin/sh
number_tranks=`/usr/sbin/asterisk -rx "sip show registry" | grep "SIP registrations" | awk '{print $1}'`
reg_tranks=`/usr/sbin/asterisk -rx "sip show registry" | grep Registered | wc -l`
let result=$number_tranks-$reg_tranks
echo $result

Соответственно первому пункту, данные скрипты необходимо внести в конфигурацию агента:

UserParameter=trunks,/etc/zabbix/scripts/trunks.sh
UserParameter=free,/etc/zabbix/scripts/free.sh
UserParameter=proc,/etc/zabbix/scripts/proc.sh
UserParameter=mysql,/etc/zabbix/scripts/mysql.sh
UserParameter=httpd,/etc/zabbix/scripts/httpd.sh
UserParameter=aster,/etc/zabbix/scripts/aster.sh
UserParameter=ok,/etc/zabbix/scripts/ok.sh
UserParameter=notok,/etc/zabbix/scripts/notok.sh
UserParameter=peers,/etc/zabbix/scripts/peers.sh

И перезапустив службу, проверить/

Данные АТС через Zabbix-Agent

Полученные ключи необходимо настроить на сервере Zabbix в шаблонах, чтобы включить мониторинг.

key=mysql

 Отдает статус mysql (база), 1 — запущена, 0 — не запущена

key=httpd

 Отдает статус httpd (веб-сервер), 1 — запущен, 0 — не запущен

key=free

 Отдает статус памяти диска, занято в %

key=proc

 Отдает нагрузку на проц в %

key=ok

 Отдает количество пиров в ОК (подключенные внутренние)

key=notok

 Отдает количество пиров не в ОК (не подключенные внутренние)

key=peers

 Отдает количество пиров в следующем виде: OK/NOTOK

key=trunks

 Отдает статус регистраций транков 0-зарегистрированы все, 1+ число не зарегистрированных

Телефонная книга CallMetrix
Корпоративный телефонный справочник для удобной связи между сотрудниками организации
Скачать описание CallMetrix
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Ренат
Ренат
31.03.2021 09:54

Добрый день!
Отличная статья, только не понятно, а что делать если проверка скрипта через команду zabbix_agent -t возвращает ошибку [m|ZBX_NOTSUPPORTED].
Я сделал скрипты на питоне, доступы все дал, на скрипты и в заббикс агенте.conf
Версия агента 2,2
Версия заббикс сервера 5,2

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.