Перейти к содержанию

Настройка мониторинга Меганоды через Zabbix

В этом документе приводится пример настройки мониторинга Мегапаноды с помощью Zabbix с помощью утилиты collectd-nagios.

Необходимые условия

Предполагается, что:

1. Включение режима мониторинга на ноде

  1. Откройте файл /etc/nginx/conf.d/default.conf:
sudo vim /etc/nginx/conf.d/default.conf
sudo vim /etc/angie/conf.d/default.conf
  1. Добавьте в блок http, server или location строку wallarm_mode monitoring;.
Пример файла /etc/nginx/conf.d/default.conf
server {
    # порт, для которого фильтруется трафик
    listen       80;
    # домен, для которого фильтруется трафик
    server_name  localhost;
    # режим работы ноды Вебмониторэкс
    wallarm_mode monitoring;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
Пример файла /etc/angie/conf.d/default.conf
server {
    # порт, для которого фильтруется трафик
    listen       80;
    # домен, для которого фильтруется трафик
    server_name  localhost;
    # режим работы ноды Вебмониторэкс
    wallarm_mode monitoring;

    location / {
        root   /usr/share/angie/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/angie/html;
    }
}

В режиме monitoring нода Вебмониторэкс анализирует все входящие запросы, но не блокирует их, если обнаружит признаки атаки. Мы рекомендуем использовать ноду в режиме monitoring в течение нескольких дней после установки и затем переключить в режим block. [Рекомендации по настройке режима фильтрации запросов →][waf-mode-recommendations]

2. Перезапуск NGINX/Angie

Используйте следующие команды для NGINX/Angie, чтобы перезапустить, активировать автостарт при перезагрузке сервера и проверить статус:

sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl restart angie
sudo systemctl enable angie
sudo systemctl status angie

Сервер NGINX/Angie должен корректно перезапуститься и находиться в состоянии active.

3. Настройка выгрузки метрик в Zabbix

Развертывание Zabbix agent

Для развертывания Zabbix выполните следующую команду:

sudo apt install zabbix-agent

Теперь у вас есть работающая система мониторинга Zabbix.

Настройка Zabbix agent для работы с Zabbix Applianc

Внесите изменения в файл конфигурации агента: /etc/zabbix/zabbix_agentd.conf:

Содержимое файла /etc/zabbix/zabbix_agentd.conf
    # Стандартные настройки zabbix agent

    PidFile=/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix-agent/zabbix_agentd.log
    LogFileSize=0
    Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

    # Нужно прописать

    Server= ip zabbix server куда передаете данные
    ServerActive= ip zabbix server куда передаете данные
    Hostname= имя вашего хоста где zabbix agent


    # Метрики tarantool для передачи на сервер - надо прописать Hostname, который прописали выше

    UserParameter=wallarm-tarantool-counter-last_request_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/counter-last_request_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-derive-export_drops, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/derive-export_drops -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-gauge-export_delay, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/gauge-export_delay -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-gauge-export_drops, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/gauge-export_drops -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-gauge-export_drops_flag, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/gauge-export_drops_flag -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-gauge-last_request_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/gauge-last_request_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm-tarantool-gauge-timeframe_size, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  wallarm-tarantool/gauge-timeframe_size -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"


    # Метрики для nginx для передачи на сервер - надо прописать Hostname, который прописали выше

    UserParameter=wallarm_nginx-gauge-abnormal, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-abnormal -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-api_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-api_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-custom_ruleset_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-custom_ruleset_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-custom_ruleset_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-custom_ruleset_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-db_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-db_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-db_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-db_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-lom_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-lom_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-lom_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-lom_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-memfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-memfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-proton_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-proton_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-proton_instances-failed, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-proton_instances-failed -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-proton_instances-fallback, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-proton_instances-fallback -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-proton_instances-success, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-proton_instances-success -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-proton_instances-total, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-proton_instances-total -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-requests_lost, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-requests_lost -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-segfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-segfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-softmemfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-softmemfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
    UserParameter=wallarm_nginx-gauge-tnt_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n  curl_json-wallarm_nginx/gauge-tnt_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"

Настройка сбора метрик с помощью Zabbix‑агента

Подключитесь к ноде и настройте сбор метрик с помощью Zabbix‑агента. Для этого выполните следующие действия на хосте с нодой:

1. Установка утилиты collectd_nagios

Для этого выполните следующую команду:

sudo apt install --no-install-recommends collectd-utils
sudo yum install collectd-utils

2. Добавьте возможность запускать утилиту collectd-nagios с повышенными привилегиями от имени пользователя zabbix

Для этого с помощью утилиты visudo добавьте следующую строку в файл /etc/sudoers:

zabbix ALL=(ALL:ALL) NOPASSWD:/usr/bin/collectd-nagios

Это позволит пользователю zabbix запускать утилиту collectd-nagios с правами суперпользователя с помощью утилиты sudo без ввода пароля.

Запуск collectd-nagios с правами суперпользователя

Утилита должна запускаться с правами суперпользователя, поскольку она использует сокет collectd (сокет домена Unix) для получения данных. Доступ к этому сокету есть только у суперпользователя.

Также, в качестве альтернативы добавлению пользователя zabbix в sudoers, вы можете настроить Zabbix‑агент так, чтобы он запускался с правами пользователя root (это может представлять угрозу безопасности, поэтому использовать этот способ не рекомендуется). Это достигается с помощью включения опции AllowRoot в конфигурационном файле агента.

3. Убедитесь, что пользователь zabbix может получать значения метрик от collectd

Для этого выполните следующую тестовую команду ноде:

sudo -u zabbix sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-timeframe_size -H HOSTNAME

Проверка доступности метрики:

zabbix_get -s IP_ZABBIX_AGENT -p 10050 -k "wallarm_nginx-gauge-lom_id"
zabbix_get -s IP_ZABBIX_AGENT -p 10050 -k "wallarm_angie-gauge-lom_id"

5. Перезапустите агент

Для этого выполните одну из следующих команд:

sudo service zabbix-agent restart
sudo systemctl restart zabbix-agent

5. Импортируйте шаблон в Zabbix Client

Для получения шаблона свяжитесь с технической поддержкой Вебмониторэкс.

Настройка завершена. Теперь вы можете осуществлять мониторинг пользовательских параметров с помощью Zabbix.