Выгрузка метрик с помощью утилиты collectd-nagios
в Zabbix¶
В этом документе приводится пример настройки выгрузки метрик WAF‑ноды в систему мониторинга Zabbix с помощью утилиты collectd-nagios
.
Схема работы примера¶
Пример метрики
В этом примере рассматривается работа с единичной метрикой curl_json-wallarm_nginx/gauge-abnormal
, которая показывает количество запросов, обработанных нодой Вебмониторэкс.
В этом документе используется следующая схема развертывания:
-
WAF‑нода Вебмониторэкс развернута на хосте, доступном по IP‑адресу
10.0.30.5
и полному доменному имениnode.example.local
.На хосте также развернут Zabbix‑агент версии 4.0 LTS, который:
- Получает значения метрик WAF‑ноды, используя утилиту
collectd-nagios
. - Слушает входящие соединения на порту
10050/TCP
(пассивные проверки с помощью Zabbix Appliance). - Передает значения метрик в Zabbix Appliance.
- Получает значения метрик WAF‑ноды, используя утилиту
-
На отдельном хосте с IP‑адресом
10.0.30.30
(далее — «хост Docker») развернут Zabbix Appliance версии 4.0 LTS в виде Docker‑контейнера.Zabbix Appliance включает в себя:
- Сервер Zabbix, который периодически опрашивает Zabbix‑агент, установленный на хосте с WAF‑нодой, на предмет изменения значений метрик.
- Веб-интерфейс для управления сервером Zabbix, доступный на порту
80/TCP
.
Настройка выгрузки метрик в Zabbix¶
Необходимые условия
Предполагается, что:
- Сервис
collectd
настроен на выгрузку метрик через сокет домена Unix (подробнее здесь). - На хост Docker
10.0.30.30
уже установлен Docker Community Edition. - WAF‑нода
node.example.local
уже развернута, настроена, доступна для дальнейшей настройки (например, по протоколу SSH) и работает.
Развертывание Zabbix¶
Для развертывания Zabbix Appliance 4.0 LTS выполните на хосте Docker следующую команду:
docker run --name zabbix-appliance -p 80:80 -d zabbix/zabbix-appliance:alpine-4.0-latest
Теперь у вас есть работающая система мониторинга Zabbix.
Развертывание Zabbix‑агента¶
Установите Zabbix‑агент 4.0 LTS на хост с WAF‑нодой:
-
Подключитесь к WAF‑ноде (например, с помощью протокола SSH). Убедитесь, что вы работаете под аккаунтом
root
или другим аккаунтом с правами суперпользователя. -
Подключите репозитории Zabbix (используйте пункт «Install Zabbix repository» инструкции, соответствующей используемой операционной системе).
-
Установите Zabbix‑агент, выполнив одну из следующих команд в зависимости от используемой операционной системы:
sudo apt install zabbix-agent
sudo yum install zabbix-agent
-
Настройте Zabbix‑агент для работы с Zabbix Appliance. Для этого внесите следующие изменения в файл конфигурации агента
/etc/zabbix/zabbix_agentd.conf
:Server=10.0.30.30 # IP‑адрес Zabbix Hostname=node.example.local # Полное доменное имя хоста с WAF‑нодой
Настройка сбора метрик с помощью Zabbix‑агента¶
Подключитесь к WAF‑ноде (например, с помощью протокола SSH) и настройте сбор метрик с помощью Zabbix‑агента. Для этого выполните следующие действия на хосте с WAF‑нодой:
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
¶
Для этого выполните следующую тестовую команду на WAF‑ноде:
sudo -u zabbix sudo /usr/bin/collectd-nagios -s /var/run/collectd-unixsock -n curl_json-wallarm_nginx/gauge-attacks -H node.example.local
Эта команда позволяет пользователю zabbix
получить значение метрики curl_json-wallarm_nginx/gauge-attacks
(количество зафиксированных атак) для хоста node.example.local
с WAF‑нодой.
Пример вывода команды:
OKAY: 0 critical, 0 warning, 1 okay | value=0.000000;;;;
4. Добавьте в файл конфигурации Zabbix‑агента на WAF‑ноде пользовательские параметры для получения требуемых вам метрик¶
Например, чтобы создать пользовательский параметр wallarm_nginx-gauge-attacks
, который будет соответствовать метрике curl_json-wallarm_nginx/gauge-attacks
для WAF‑ноды с полным доменным именем node.example.local
, добавьте в файл конфигурации следующую строку:
UserParameter=wallarm_nginx-gauge-attacks, sudo /usr/bin/collectd-nagios -s /var/run/collectd-unixsock -n curl_json-wallarm_nginx/gauge-attacks -H node.example.local | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
Извлечение значения метрики
Для извлечения значения метрики, идущего после value=
в выводе утилиты collectd-nagios
(например, OKAY: 0 critical, 0 warning, 1 okay | value=0.000000;;;;
), используется перенаправление вывода в утилиту sed
с последующим выполнением скрипта.
Обратитесь к документации sed
для получения дополнительных сведений о синтаксисе его скриптов.
5. После того, как в файл конфигурации Zabbix‑агента добавлены все необходимые команды, перезапустите агент¶
Для этого выполните одну из следующих команд:
sudo service zabbix-agent restart
sudo systemctl restart zabbix-agent
Настройка завершена¶
Теперь вы можете осуществлять мониторинг пользовательских параметров, связанных со специфичными для Вебмониторэкс метриками, с помощью Zabbix.