Задача: проработать как мониторить Asterisk SIP транки посредством Zabbix’са.
Схема следующая:
Zabbix (srv-mon) (Ubuntu 12.04.5 Server amd64 — Asterisk (Ubuntu 14.04.4 Server amd64) (подняты транки до Манго чтобы работали voip телефоны Cisco CP-7925G, о том как это сделать смотреть в этой пошаговой заметке)
Ставляю на 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
Теперь если Вам (как и мне) потребуется на новом рабочем месте развернуть систему мониторинга за инфраструктурой у Вас уже будут свои наработки по составленным шаблонам их останется только импортировать. Удобно. А вообще лучше расписывать в виде заметок как настраивать тот или иной элемент данных чтобы потом обратиться к заметке и воспроизвести, хотя не возбраняется все помнить и ничего не записывать. На этом я прощаюсь, до новых заметок на моем блоге, с уважением автор блога – ekzorchik.