Наблюдать за 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 (это еще не готовый вариант, так как постоянно его дописываю).
Смотрите также мои статьи:
- Частые сообщения «Remote UNIX connection» в Asterisk
- Как запустить Zabbix-agent из под root
- Примеры триггеров для Zabbix
А можно получить описание по созданию триггеров и эл.данных?
https://ixnfo.com/primeryi-triggerov-dlya-zabbix.html
asterisk -rx ‘core show calls’ | grep active | awk {‘print $1’}
Отличная статья, спасибо!
Только по мне в:
# 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]*’