Инструменты пользователя

Инструменты сайта


faq:zabbix

Zabbix агент v.5

Настройка MikoPBX

Опишем ручной способ настройки и запуска Zabbix агента.

  1. Подключаемся к АТС по ssh см. инструкции
  2. Создадим рабочие каталоги:
    mkdir -p /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts
  3. Опишем файл настроек zabbix
    cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/zabbix_agentd.conf
  4. Вставляем содержимое файла
    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
  5. IP / Адрес сервера укажите свой.
  6. Hostname укажите тот же, что и в интерфейсе Zabbix сервера
  7. Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла
  8. Создадим каталог для скриптов
    mkdir -p /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts
  9. Создадим скрипт для получения информации о системе
    cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/asterisk-stats.sh
  10. Вставьте содержимое :
    #!/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
  11. Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла
  12. Опишем скрипт для запуска zabbix агента:
  13. Создадим скрипт для получения информации о системе
    cat > /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/starter.sh
  14. Вставьте содержимое :
    #!/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
  15. Добавим права на исполнение скрипта
    chmod +x /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/*
  16. Нажмите комбинацию клавиш CTRL + D для заверения редактирования файла
  17. Добавим задачу в cron на проверку и запуск zabbix
  18. Перейдите в раздел СистемаКастомизация системных файлов.
  19. Откройте для редактирования конфигурационный файл /var/spool/cron/crontabs/root. Установите режим «Добавлять в конец файла»
  20. Добавьте задачу
    */5 * * * *  /storage/usbdisk1/mikopbx/custom_modules/zabbix/scripts/starter.sh > /dev/null 2> /dev/null
  21. Теперь каждые 5 минут будет запускаться скрипт стартер, если Zabbix процесса нет, то скрипт его запустит

Описание доступных ключей

  • «asterisk[status]» - проверка запущен ли asterisk
  • «asterisk[statusReload]» - как давно был выполнен reload конфигурации
  • «asterisk[statusUptime]» - длительность работы текущего процесса asterisk
  • «asterisk[callsActive]» - количество текущих активных звонков
  • «asterisk[channelsActive]» - количество текущих активных каналов
  • «asterisk[callsProcessed]» - количество обработанных телефонных звонков текущим процессом Asterisk
  • Есть возможность расширить набор ключей, для этого необходимо доработать скрипт asterisk-stats.sh. В квадратных скобках описывается имя функции, ее необходимо описать в shell скрипте

Описание ключей элементов данных

Настройка Zabbix сервера

  1. В разделе «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.

  2. В разделе «Configuration» - «Hosts» добавьте новый хост , можно также импортировать 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"
                }
            ]
        }
    }
  3. При описание Host укажите IP адрес MikoPBX
  4. «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

Полезные ссылки

faq/zabbix.txt · Последние изменения: 2023/12/29 13:03 — Бекетов Николай