Выгрузка метрик с помощью утилиты 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-agentsudo 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.
