Задача: проработать как мониторить Asterisk SIP транки посредством Zabbix’са.

Схема следующая:

Zabbix (srv-mon) (Ubuntu 12.04.5 Server amd64 — Asterisk (Ubuntu 14.04.4 Server amd64) (подняты транки до Манго чтобы работали voip телефоны Cisco CP-7925G, о том как это сделать смотреть в этой пошаговой заметке)

Схема мониторинга транков Asterisk для Zabbix

Ставляю на Asterisk (srv-host) — Zabbix агент:

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

  • Статус работы Trunka

Теперь на хосте Asterisk:

srv-host*CLI> sip show registry

Host dnsmgr Username Refresh State Reg.Time

<domain>.mangosip.ru:5060 N 000113 345 Registered Thu, 07 Apr 2016 17:03:47

1 SIP registrations.

Из вывода мне нужно мониторить изменения состояния регистрации поднятого транка: State = Registered

Т.к. у меня Asterisk Работает без привилигированных прав то нужно будет научить процесс агента Zabbix иметь возможность запуска подключения к административной части Asterisk с целью парсинга вывода.

ekzorchik@srv-host:~$ sudo updatedb

ekzorchik@srv-host:~$ locate asterisk | grep 'sbin'

/usr/sbin/asterisk

/usr/sbin/rasterisk

/usr/sbin/safe_asterisk

В файл /etc/sudoers добавляем строку:

ekzorchik@srv-host:~$ sudo nano /etc/sudoers

zabbix ALL=NOPASSWD: /usr/sbin/asterisk

ekzorchik@srv-host:~$ sudo /usr/sbin/asterisk -rx'sip show registry'

Host dnsmgr Username Refresh State Reg.Time

<domain>.mangosip.ru:5060 N 000112 345 Registered Thu, 07 Apr 2016 17:49:48

1 SIP registrations.

В моем случае в выводе присутствует имя 000112 дело в том, что я каждый номер который завожу на Asterisk регистрирую как транк до провайдера облачной телефонии Манго который применяется у меня на работе, а Asterisk используется для Cisco телефонов которые к нему подключены и каждый под своим транком и точно таким же номером. А раз так, то нужно и мониторить регистрацию sip номера телефонного аппарата на Asterisk:

ekzorchik@srv-host:~$ sudo /usr/sbin/asterisk -rx'sip show registry' | grep Registered | wc -l

1

или так:

ekzorchik@srv-host:~$ sudo /usr/sbin/asterisk -rx'sip show registry' | grep '<domain>.mangosip.ru' | awk '{print $5}' | wc -l

1

, где получаемый результат со значение 1 значит что транк в зарегистрированном состоянии.

ekzorchik@srv-host:~$ sudo mkdir -p /usr/lib/zabbix/externalscripts

ekzorchik@srv-host:~$ sudo nano /usr/lib/zabbix/externalscripts/trunk

#!/bin/bash

/usr/sbin/asterisk -rx'sip show registry' | grep '<domain>.mangosip.ru' | awk '{print $5}' | wc -l

exit

ekzorchik@srv-host:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/trunk

ekzorchik@srv-host:~$ sudo /usr/lib/zabbix/externalscripts/trunk

1

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

ekzorchik@srv-host:~$ sudo nano /etc/zabbix/zabbix_agentd.conf

UserParameter=trunk[*],/usr/lib/zabbix/externalscripts/trunk

ekzorchik@srv-host:~$ sudo service zabbix-agent restart

ekzorchik@srv-host:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t trunk

trunk [t|1]

Теперь подготавливаю элемент данных для этого хоста на предмет отслеживания изменения в зарегистрированности транка: (за основу можно взять вот эту заметку)

У меня шаблон: Template Asterisk, а в нем элемент данных:

Name: Status Trunk

Type: Zabbix agent

Key: trunk

Update inverfal (in sec): 60

History storage period (in days): 7

Trend storage period (in days): 365

New application: Asterisk

Description:

1 – это Trunk поднят и зарегистрирован

0 – это Trunk не зарегистрирован

Enabled: отмечаем галочкой

Нажимаю сохранить Save и к этому элементу данных создаем триггер:

Name: Status Trunk

{Template Asterisk:trunk.last()}=0

Если значение ключа trunk равно 0 то сработает уведомление о проблеме

Severity: Warning

Enabled: Отмечаем галочкой

Нажимаю сохранить Save

Теперь посмотрев на график наблюдаю полосу свидетельствующую что поднят:

Поднят

Транк поднятУпал

Транк упал и лежит

Ну или как-то так:

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

http://IP&DNS/ – Configuration – Templates – отмечаем галочкой созданный шаблон: Template Asterisk и внизу выбираем Export selected (Экспортировать выбранное) и нажимаем Go, затем выбираем “Сохранить в файл” – OK

Сохраняю Template как резервную копию

Теперь если Вам (как и мне) потребуется на новом рабочем месте развернуть систему мониторинга за инфраструктурой у Вас уже будут свои наработки по составленным шаблонам их останется только импортировать. Удобно. А вообще лучше расписывать в виде заметок как настраивать тот или иной элемент данных чтобы потом обратиться к заметке и воспроизвести, хотя не возбраняется все помнить и ничего не записывать. На этом я прощаюсь, до новых заметок на моем блоге, с уважением автор блога – ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru