Мониторинг SIP транков FreePBX в Zabbix

В этой публикации я опять же напишу краткую шпаргалку по о том, как можно настроить Мониторинг SIP транков FreePBX, а также состояние соединения до пиров. О том, как настроить мониторинг FreePBX в Zabbix я уже писал ранее. Только вот штатный шаблон не позволяет отслеживать состояние отдельных SIP транков. Поэтому пришлось немного дополнить мониторинг. О том, как это можно сделать я расскажу ниже.

Версии ПО

Версия Zabbix: Zabbix 6.2.6.

Версия FreePBX: 14.0.16.11 (Asterisk 14.5.0).

Немного теории

Как я уже говорил ранее, в шаблоне для Asterisk от Zabbix нет возможности мониторить состояние SIP транков. Прийдется немного расширить мониторинг.

Что я хочу отслеживать:

  • Состояние SIP-транков.
  • Состояние соединения до пиров (которые используют TCP соединения).

Первое, что нужно выяснить – это то, как можно получить эту информацию через консоль Asterisk.

Команда для получения состояния SIP регистраций:

asterisk -rx "sip show registry"
[root@FreePBX ~]# asterisk -rx "sip show registry"
Host                                    dnsmgr Username       Refresh State                Reg.Time                 
111111.11.rt.ru:5060                    Y      admin             3185 Registered           Wed, 08 Mar 2023 18:04:40
1 SIP registrations.
[root@FreePBX ~]# 

т.е. в случае успешной SIP регистрации статус будет отображаться как “Registered”.

Команда для проверки состояния соединений до пиров:

asterisk -rx "sip show peers"
[root@FreePBX ~]# asterisk -rx "sip show peers"
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description
........
RT/xxxxx                  1.1.1.1                               Yes        Yes            5060     OK (31 ms)                                   
goip_1/goip_1             192.168.1.12                            D  Yes        Yes            5060     OK (7 ms)                                    
goip_gsm                  192.168.1.12                               Yes        Yes            5060     OK (5 ms)                                    
101 sip peers [Monitored: 3 online, 98 offline Unmonitored: 0 online, 0 offline]
[root@FreePBX ~]# 

т.е. в случае успешного соединения статус будет отображаться как “OK”.

Теперь попробуем сформировать нужные нам команды. Общий принцип, которые я использовал следующий – в случае успешной проверки команда должна возвращать значение 1, в противном случае возвращать значение 0.

Команда для проверки SIP регистраций (для SIP регистрации 111111.11.rt.ru):

if [[ $(sudo asterisk -rx "sip show registry" | grep "111111.11.rt.ru" | awk {'print $5'}) == "Registered" ]]; then echo 1; else echo 0; fi

Команда для проверки состояния соединений (для пира RT):

if [[ $(sudo asterisk -rx "sip show peer RT" | grep Status | awk {'print $3'}) == "OK" ]]; then echo 1; else echo 0; fi

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

Итоговая команда для проверки SIP регистраций:

if [[ $(sudo asterisk -rx "sip show registry" | grep $1 | awk {'print $5'}) == "Registered" ]]; then echo 1; else echo 0; fi

Итоговая команда для проверки состояния соединений:

if [[ $(sudo asterisk -rx "sip show peer $1" | grep Status | awk {'print $3'}) == "OK" ]]; then echo 1; else echo 0; fi

Далее я приступлю непосредственно к настройке.

Мониторинг SIP-транков FreePBX и соединения до пиров

Теперь я покажу, как настроить мониторинг SIP транков FreePBX и пиров непосредственно в Zabbix.

Настройка пользовательских параметров агента Zabbix

Поскольку команды у нас получились длинные и содержащие довольно много спецсимволов, то через обычный system.run[command] выполнить мы их. К тому же имя SIP транка или имя пира я хочу передавать параметрами к скрипту.

Для реализации подхода к мониторингу с требованиями выше я буду использовать пользовательские команды агента Zabbix.

Сначала я подготовлю два скрипта – для отслеживания состояния SIP транков и отслеживания состояния пиров.

Создам скрипт для мониторинга SIP транков:

nano /usr/lib/zabbix/externalscripts/TrunkAvailability.sh
#!/bin/bash

if [[ $(sudo asterisk -rx "sip show registry" | grep $1 | awk {'print $5'}) == "Registered" ]]; then echo 1; else echo 0; fi

Также создам скрипт для мониторинга состояния пиров:

nano /usr/lib/zabbix/externalscripts/PeerAvailability.sh
#!/bin/bash
if [[ $(sudo asterisk -rx "sip show peer $1" | grep Status | awk {'print $3'}) == "OK" ]]; then echo 1; else echo 0; fi

Установим бит выполнения:

chmod +x /usr/lib/zabbix/externalscripts/PeerAvailability.sh
chmod +x /usr/lib/zabbix/externalscripts/TrunkAvailability.sh

После создания скриптов необходимо добавить пользовательские параметры в конфигурационный файл агента Zabbix:

nano /etc/zabbix/zabbix_agentd.conf
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#	Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
UserParameter=peerstatus[*],/usr/lib/zabbix/externalscripts/PeerAvailability.sh $1
UserParameter=sipregistrystatus[*],/usr/lib/zabbix/externalscripts/TrunkAvailability.sh $1

Особо в детали вдаваться не буду, т.к. все подробно расписано в документации. Если кратко, то агент Zabbix будет вызыывать скрипт PeerAvailability.sh или TrunkAvailability.sh и передавать в этот скрипт параметр, который мы передали элементу peerstatus или sipregistrystatus. Например, при вызове sipregistrystatus[“11111.11.rt.ru”] в настройках элементов мониторинга скрипту TrunkAvailability.sh будет передано значение “RT” в качестве параметра, т.е. итоговый вызов скрипта будет вот такой:

TrunkAvailability.sh "11111.11.rt.ru"

После внесения всех изменений в конфигурационный файл агента Zabbix необходимо его перезапустить:

systemctl restart zabbix-agent

Настройка файла sudoers

Чтобы учетная запись агента Zabbix могла выполнять запуск команд в asterisk без пароля необходимо добавить соответствующую запись в файл sudoers:

vim sudoers
abbix ALL=NOPASSWD: /usr/sbin/asterisk

Сохраняем внесенные изменения.

Добавление элементов мониторинга в шаблон Zabbix

Последний шаг – это непосредственно добавление элементов мониторинга в веб интерфейсе управления Zabbix.

Для примера я добавлю один элемент для отслеживания состояния SIP транка и один элемент для отслеживания состояния соединения с пиром.

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

Пример для SIP транка:

Кратко привожу основные параметры настройки.

ПараметрМое ЗначениеОписание
NameSIP Registry Status RTИмя элемента мониторинга. Может быть любое
TypeZabbix agentТип элемента мониторинга
Keysipregistrystatus[“111111.11.rt.ru”]Один из самых важных параметров. Здесь нужно указать ключ, который мы настроили на агента Zabbix + передать ему параметр – имя SIP транка
Type of informationnumeric (unsigned)Тип значения. Наш скрипт возвращает либо 1, либо 0. Целое значение без знака вполне подойдет
Update interval1mИнтервал опроса. Я буду отслеживать состояние раз в минуту
Description1 – sip registry is active
0 – sip registry is offline
Для удобства интерпретации полученных значений от агента Zabbix

Пример для отслеживания состояния соединения с пиром:

Кратко привожу основные параметры настройки.

ПараметрМое ЗначениеОписание
NamePeer Status GSMИмя элемента мониторинга. Может быть любое
TypeZabbix agentТип элемента мониторинга
Keypeerstatus[“goip_gsm”]Один из самых важных параметров. Здесь нужно указать ключ, который мы настроили на агента Zabbix + передать ему параметр – имя пира
Type of informationnumeric (unsigned)Тип значения. Наш скрипт возвращает либо 1, либо 0. Целое значение без знака вполне подойдет
Update interval1mИнтервал опроса. Я буду отслеживать состояние раз в минуту
Description1 – peer is active
0 – peer is offline
Для удобства интерпретации полученных значений от агента Zabbix

Далее, по желанию, вы можете настроить триггеры, графики и дашборы на ваше усмотрение и вкус.

Проверка работы

Проверим получаемые данные:

Агент Zabbix рапортует о том, что все SIP транки и пиры, которые мы подключили к мониторингу доступны.

Если вы настроили какие-то графики или дашборы, то на них у вас также должна начать отображаться собранная информация о состоянии транков и соединений.

Настройка мониторинга SIP-транков и подключения к пирам на FreePBX завершена.

Мониторинг SIP транков FreePBX в Zabbix: 2 комментария

  1. chmod x+ /usr/lib/zabbix/externalscripts/PeerAvailability.sh

    chmod +x /usr/lib/zabbix/externalscripts/PeerAvailability.sh

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *