Мониторинг Asterisk в Zabbix

Наблюдать за Asterisk будем через Zabbix агент, для этого установим его на той же машине что и Asterisk.

Как устанавливать Zabbix агент я описывал в этих статьях:
Установка и настройка Zabbix агента в Ubuntu
Установка и настройка Zabbix агента в Windows

Можно также обойтись и без установки Zabbix агента, а получать информацию по SSH, для этого на удаленном Zabbix сервере нужно будет создать шаблон и добавлять в него SSH проверки с указанными ниже командами.
Смотрите также мою статью — Настройка SSH проверок в Zabbix.
Мне же проще использовать Zabbix агент.

Следующий код добавим в файл конфигурации Zabbix агента /etc/zabbix/, на той же машине что и Asterisk:

# total number of asterisk extensions
UserParameter=asterisk.extensions_total,asterisk -rx "database show" | grep DEVICE | grep dial | wc -l
# number of registered extensions
UserParameter=asterisk.extensions_online,asterisk -rx "database show" | grep Registry | wc -l
# number of offline extensions
UserParameter=asterisk.extensions_offline,asterisk -rx "sip show peers" | grep -v trunk | grep -v --text -i "sip peers" | grep -v Forceport | grep UNKNOW | wc -l
# total number of trunks
UserParameter=asterisk.trunks_total,asterisk -rx "sip show registry" | grep -v "registrations" | grep -v "Reg.Time" | wc -l
# number of registered trunks
UserParameter=asterisk.trunks_online,asterisk -rx "sip show registry" | grep -v "registrations" | grep -v "Reg.Time" | grep Registered | wc -l
# number of offline trunks
UserParameter=asterisk.trunks_offline,asterisk -rx "sip show registry" | grep -v "registrations" | grep -v "Reg.Time" | grep -v Registered | wc -l
# number of active calls
UserParameter=asterisk.active_calls,asterisk -rvvvvvx 'core show channels'| grep --text -i 'active call'| cut -c1
# number of seconds since last asterisk start
UserParameter=asterisk.uptime,asterisk -rx "core show uptime seconds" | grep --text -i "System uptime:" | gawk '{print $3}'
# number of asterisk processes
UserParameter=asterisk.asterisk_running,ps cax | grep asterisk | wc -l
# number of fail2ban processes
UserParameter=asterisk.fail2ban_running,ps cax | grep fail2ban | wc -l
# number of fail2ban active chains
UserParameter=asterisk.fail2ban_active,iptables -nL | grep Chain | grep -E 'f2b|fail2ban' | wc -l

Примеры для PJSIP:

UserParameter=asterisk.201.online,asterisk -rx "pjsip show endpoints" | grep "Avail" | grep "201/sip" | wc -l
UserParameter=asterisk.pjsip.online,asterisk -rx "pjsip show endpoints" | grep "Avail" | grep "Contact:  2" | wc -l
UserParameter=asterisk.ukrtel.online,asterisk -rx "pjsip show endpoints" | grep "ukrtelecom" | grep "Avail" | wc -l

Если будете делать по SSH, то сами команды в коде выше можно увидеть после запятой, например на второй строке команда:

asterisk -rx "database show" | grep DEVICE | grep dial | wc -l

Так как для некоторых команд нужны привилегии root, то разрешим выполнение от его имени, открыв файл конфигурации Zabbix агента в текстовом редакторе и раскомментировав или указав параметр AllowRoot=1:

sudo nano /etc/zabbix/zabbix_agentd.conf

Перезапустим Zabbix агент чтобы применить изменения, в Ubuntu это можно сделать так:

sudo /etc/init.d/zabbix-agent restart

Теперь осталось создать шаблон на Zabbix сервере и добавить в него элементы данных, триггеры и графики.
Можете также скачать и импортировать в Zabbix мой шаблон Template_App_Asterisk_Service (это еще не готовый вариант, так как постоянно его дописываю).

Смотрите также мои статьи:

Вливайтесь в общение

4 комментария

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

  1. А можно получить описание по созданию триггеров и эл.данных?

  2. asterisk -rx ‘core show calls’ | grep active | awk {‘print $1’}

  3. Отличная статья, спасибо!
    Только по мне в:
    # number of active calls
    UserParameter=asterisk.active_calls,asterisk -rvvvvvx ‘core show channels’| grep —text -i ‘active call’| cut -c1
    Возвращает только первый знак, а так как у нас звонков всегда больше 10, для меня лучше:
    UserParameter=asterisk.active_calls,asterisk -rvvvvvx ‘core show channels’| grep —text -i ‘active call’| grep -o ‘[0-9]*’