====== Zabbix агент v.5 ====== [[faq:|Обратно к инструкциям]] Эта инструкция устарела, новая инструкция по модулю доступна в нашей новой документации! [[https://docs.mikopbx.com/mikopbx/modules/miko/module-zabbix-agent]] ===== Настройка MikoPBX ===== Опишем ручной способ настройки и запуска Zabbix агента. - Подключаемся к АТС по ssh [[faq:putty|см. инструкции]] - Создадим рабочие каталоги: mkdir -p /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts - Опишем файл настроек zabbix cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/zabbix_agentd.conf - Вставляем содержимое файла Server=172.16.156.185 ServerActive=172.16.156.185 Hostname=mikopbx AllowRoot=1 # LogType=system UserParameter=asterisk[*],/storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/asterisk-stats.sh $1 LogType=file LogFile=/storage/usbdisk1/mikopbx/custom_modules/zabbix/full.log DebugLevel=0 LogFileSize=2 - **IP / Адрес** сервера укажите свой. - **Hostname** укажите тот же, что и в интерфейсе Zabbix сервера - Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла - Создадим каталог для скриптов mkdir -p /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts - Создадим скрипт для получения информации о системе cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/asterisk-stats.sh - Вставьте содержимое : #!/bin/sh ASTERISK='/usr/sbin/asterisk'; PHP_INFO="$(dirname "$0")/AsteriskInfo.php"; status(){ pidData=$(/bin/busybox ps | /bin/busybox grep '/usr/sbin/asterisk -f' | /bin/busybox grep -v grep); if [ "${pidData}x" = "x" ]; then echo 0 else echo 1 fi } statusReload(){ reloadTime=$("$ASTERISK" -rx "core show uptime seconds" | awk -F": " '/Last reload/{print$2}'); if [ -z "$reloadTime" ];then echo "Asterisk has not been reloaded yet" else printf '%dd:%dh:%dm:%ds\n' $((reloadTime/86400)) $((reloadTime%86400/3600)) $((reloadTime%3600/60)) $((reloadTime%60)) fi } statusUptime(){ upTime=$("$ASTERISK" -rx "core show uptime seconds" | awk -F ": " '/System uptime/{print$2}'); if [ -z "$upTime" ];then echo "Asterisk is not up" else printf '%dd:%dh:%dm:%ds\n' $((upTime/86400)) $((upTime%86400/3600)) $((upTime%3600/60)) $((upTime%60)) fi } callsActive(){ CALL=$("$ASTERISK" -rx "core show channels" | grep "active call"| awk '{print$1}'); echo "$CALL" } channelsActive(){ CHANNEL=$("$ASTERISK" -rx "core show channels" | grep "active channels" | awk '{print $1}') echo "$CHANNEL" } callsProcessed(){ CALL=$("$ASTERISK" -rx "core show channels" |grep "calls processed"|awk '{print$1}'); echo "$CALL" } ### Execute the argument $1 - Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла - Опишем скрипт для запуска zabbix агента: - Создадим скрипт для получения информации о системе cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/starter.sh - Вставьте содержимое : #!/bin/sh confFile="$(/bin/busybox dirname "$(/bin/busybox dirname "$0")")/zabbix_agentd.conf"; pidData=$(/bin/busybox ps | /bin/busybox grep "$confFile" | /bin/busybox grep -v grep); if [ -z "$pidData" ];then /usr/sbin/zabbix_agentd -c "$confFile"; fi - Добавим права на исполнение скрипта chmod +x /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/* - Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла - Добавим задачу в cron на проверку и запуск zabbix - Перейдите в раздел **Система** -> **Кастомизация системных файлов**.\\ {{ :providers:many_hosts:2019-02-04_173507.png |}} - Откройте для редактирования конфигурационный файл **/var/spool/cron/crontabs/root**. Установите режим "**Добавлять в конец файла**" - Добавьте задачу */5 * * * * /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/starter.sh > /dev/null 2> /dev/null - Теперь каждые 5 минут будет запускаться скрипт стартер, если Zabbix процесса нет, то скрипт его запустит ===== Описание доступных ключей ===== * "**asterisk[status]**" - проверка запущен ли asterisk * "**asterisk[statusReload]**" - как давно был выполнен reload конфигурации * "**asterisk[statusUptime]**" - длительность работы текущего процесса asterisk * "**asterisk[callsActive]**" - количество текущих активных звонков * "**asterisk[channelsActive]**" - количество текущих активных каналов * "**asterisk[callsProcessed]**" - количество обработанных телефонных звонков текущим процессом Asterisk * Есть возможность расширить набор ключей, для этого необходимо доработать скрипт **asterisk-stats.sh**. В квадратных скобках описывается имя функции, ее необходимо описать в shell скрипте [[https://www.zabbix.com/documentation/2.0/ru/manual/config/items/item/key|Описание ключей элементов данных]] ===== Настройка Zabbix сервера ===== - В разделе "**Configuration**" - "**Tamplates**" настройте новый шаблон, добавьте описанные выше ключи. Пример файла шаблона: { "zabbix_export": { "version": "6.2", "date": "2022-07-22T05:50:22Z", "template_groups": [ { "uuid": "1d12408342854fd5a4436dd6d5d1bd4a", "name": "Templates/Telephony" } ], "templates": [ { "uuid": "f4990f9a568d4d8abfb6f972fd3e40e8", "template": "asterisk mikopbx", "name": "asterisk mikopbx", "groups": [ { "name": "Templates/Telephony" } ], "items": [ { "uuid": "122ccdda2a6544ccb61bcc29c0064f7a", "name": "active calls", "key": "asterisk[callsActive]" }, { "uuid": "8b1a6cbc57584eb1948da54fbf959dcf", "name": "calls processed", "key": "asterisk[callsProcessed]", "history": "1d", "trends": "1d" }, { "uuid": "3b49a30b1b164814b3bad48e5aed4d79", "name": "active channels", "key": "asterisk[channelsActive]" }, { "uuid": "84e98b4e6c53487b96afe205e05055b8", "name": "asterisk last reload", "key": "asterisk[statusReload]", "history": "1d", "trends": "0", "value_type": "TEXT" }, { "uuid": "19524424a4f940ada1e0e33eddf92256", "name": "system uptime", "key": "asterisk[statusUptime]", "history": "1d", "trends": "0", "value_type": "TEXT" }, { "uuid": "2a394e224dea41c381273d7bffc28e15", "name": "enable", "key": "asterisk[status]", "description": "Is the asterisk process running" } ] } ] } } Сохранив текст шаблона в файл, его можно импортировать в Zabbix. - В разделе "**Configuration**" - "**Hosts**" добавьте новый хост {{ :faq:zabbix_docker_configuration_of_hosts.png |}}, можно также импортировать json { "zabbix_export": { "version": "6.2", "date": "2022-07-22T05:49:34Z", "host_groups": [ { "uuid": "dc579cd7a1a34222933f24f52a68bcd8", "name": "Linux servers" } ], "hosts": [ { "host": "mikopbx", "name": "mikopbx", "ipmi_authtype": "NONE", "templates": [ { "name": "asterisk mikopbx" } ], "groups": [ { "name": "Linux servers" } ], "interfaces": [ { "ip": "172.16.156.223", "interface_ref": "if1" } ], "inventory_mode": "DISABLED" } ] } } - При описание **Host** укажите IP адрес MikoPBX - "**Host name**" должен совпадать с "**Hostname**" в конфигурационном файле **zabbix_agentd.conf** ==== Настройка firewall MikoPBX ==== Через веб интерфейс отредактируйте файл **/etc/firewall_additional** Добавьте строчку где **172.16.16.16/32** замените на адрес zabbix сервера. iptables -I INPUT 2 -s 172.16.16.16/32 -p tcp -m multiport --dports 10050 -j ACCEPT ===== Полезные ссылки ===== * [[https://www.zabbix.com/documentation/current/en/manual/installation/containers | Installation Zabbix Server from containers]] * [[https://www.zabbix.com/documentation/current/en/manual/quickstart/host|Настройка Hosts]] * [[https://www.zabbix.com/documentation/current/en/manual/quickstart/template|Настройка Template]] [[faq:|Обратно к инструкциям]]