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

Настройка 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+ число не зарегистрированных

 
avatar
  Подписаться  
Уведомление о

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

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

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

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

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices