Выгрузка метрик с помощью утилиты collectd-nagios
в Nagios¶
В этом документе приводится пример настройки выгрузки метрик WAF‑ноды в систему мониторинга Nagios (рассматривается редакция Nagios Core, однако этот документ подойдет для любой редакции Nagios) с помощью утилиты collectd-nagios
.
Соглашения и необходимые требования
- Сервис
collectd
должен быть настроен на выгрузку метрик через сокет домена Unix (подробнее здесь). -
Предполагается, что у вас уже установлена редакция Nagios Core.
Если это не так, установите Nagios Core (например, следуя этим инструкциям).
Вы можете использовать другую редакцию Nagios при необходимости (например, Nagios XI).
Далее для обозначения любой редакции Nagios будет использоваться термин «Nagios», если не указано иное.
-
Убедитесь, что у вас есть возможность подключения к WAF‑ноде и хосту Nagios (например, по протоколу SSH) и работы под аккаунтом
root
или другим аккаунтом с правами суперпользователя. - Установите на WAF‑ноде сервис Nagios Remote Plugin Executor (далее — «NRPE»).
Схема работы примера¶
Пример метрики
В этом примере рассматривается работа с единичной метрикой curl_json-wallarm_nginx/gauge-abnormal
, которая показывает количество запросов, обработанных нодой Вебмониторэкс.
В этом документе используется следующая схема развертывания:
-
WAF‑нода Вебмониторэкс развернута на хосте, доступном по IP‑адресу
10.0.30.5
и полному доменному имениnode.example.local
. -
Хост, на котором установлен Nagios, доступен по IP‑адресу
10.0.30.30
. -
Для выполнения команд на удаленном хосте используется плагин NRPE. Плагин состоит из двух компонентов:
- Сервиса
nrpe
, который устанавливается на машину, мониторинг которой необходимо осуществлять. Работает на стандартном для NRPE порту5666/TCP
. - Nagios‑плагина NRPE
check_nrpe
, который устанавливается на хост Nagios и позволяет Nagios выполнять команды на удаленном хосте, на котором установлен сервисnrpe
.
- Сервиса
-
NPRE будет использоваться для вызова утилиты
collectd_nagios
, которая предоставляет метрикиcollectd
в Nagios‑совместимом формате.
Настройка выгрузки метрик в Nagios¶
Особенности установки
В этом документе описывается настройка плагина NRPE с параметрами по умолчанию в условиях, когда Nagios также установлен с параметрами по умолчанию (директория Nagios: /usr/local/nagios
, Nagios работает под аккаунтом nagios
). Если вы устанавливаете плагин или Nagios с использованием нестандартных параметров, скорректируйте приведенные в документе команды и указания соответствующим образом.
Чтобы настроить выгрузку метрик WAF‑ноды, выполните следующие действия:
1. Настройте сервис NRPE для коммуникации с хостом Nagios¶
Для этого на хосте с WAF‑нодой:
-
Откройте конфигурационный файл NRPE (по умолчанию
/usr/local/nagios/etc/nrpe.cfg
). -
Добавьте в директиву
allowed_hosts
файла IP‑адрес или полное доменное имя хоста Nagios. Например, если хост Nagios имеет IP‑адрес10.0.30.30
:allowed_hosts=127.0.0.1,10.0.30.30
-
Перезапустите сервис NRPE, выполнив одну из следующих команд:
sudo service nrpe restart
sudo systemctl restart nrpe
2. Установите Nagios‑плагин NRPE на хост Nagios¶
Для этого на хосте Nagios:
-
Выполните действия по загрузке и распаковке исходных файлов плагина NRPE, а также установите необходимые для сборки и установки утилиты (см. документацию NRPE).
-
Перейдите в директорию с исходными файлами плагина, соберите его и установите Nagios‑плагин.
Минимальная последовательность действий такова:
./configure make all make install-plugin
3. Убедитесь, что Nagios‑плагин NRPE успешно взаимодействует с сервисом NRPE¶
Для этого выполните следующую команду на хосте Nagios:
/usr/local/nagios/libexec/check_nrpe -H node.example.local
В случае успешного функционирования NRPE в выводе команды должна содержаться версия NRPE (например, NRPE v3.2.1
).
4. На хосте Nagios определите команду check_nrpe
для запуска Nagios‑плагина NRPE с одним аргументом¶
Для этого добавьте в файл /usr/local/nagios/etc/objects/commands.cfg
следующие строки:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
5. Установите утилиту collectd_nagios
на хосте с WAF‑нодой¶
Для этого выполните одну из следующих команд (в зависимости от дистрибутива):
sudo apt install --no-install-recommends collectd-utils
sudo yum install collectd-utils
6. Добавьте возможность запускать утилиту collectd-nagios
с повышенными привилегиями от имени пользователя nagios
¶
Для этого выполните следующие действия на хосте с WAF‑нодой:
-
С помощью утилиты
visudo
добавьте следующую строку в файл/etc/sudoers
:nagios ALL=(ALL:ALL) NOPASSWD:/usr/bin/collectd-nagios
Это позволит пользователю
nagios
запускать утилитуcollectd-nagios
с правами суперпользователя с помощью утилитыsudo
без ввода пароля.Запуск
collectd-nagios
с правами суперпользователяУтилита должна запускаться с правами суперпользователя, поскольку она использует сокет
collectd
(сокет домена Unix) для получения данных. Доступ к этому сокету есть только у суперпользователя. -
Убедитесь, что пользователь
nagios
может получать значения метрик отcollectd
, выполнив следующую тестовую команду на WAF‑ноде:sudo -u nagios sudo /usr/bin/collectd-nagios -s /var/run/collectd-unixsock -n curl_json-wallarm_nginx/gauge-attacks -H node.example.local
Эта команда позволяет пользователю
nagios
получить значение метрикиcurl_json-wallarm_nginx/gauge-attacks
(количество зафиксированных атак) для хостаnode.example.local
с WAF‑нодой.Пример вывода команды:
OKAY: 0 critical, 0 warning, 1 okay | value=0.000000;;;;
-
Добавьте в файл конфигурации сервиса NRPE префикс для запуска команд с помощью утилиты
sudo
:command_prefix=/usr/bin/sudo
7. Добавьте в файл конфигурации сервиса NRPE на WAF‑ноде команды для получения требуемых вам метрик¶
Например, чтобы создать команду с именем check_wallarm_nginx_attacks
, которая будет получать метрику curl_json-wallarm_nginx/gauge-attacks
для WAF‑ноды с полным доменным именем node.example.local
, добавьте в файл конфигурации следующую строку:
command[check_wallarm_nginx_attacks]=/usr/bin/collectd-nagios -s /var/run/collectd-unixsock -n curl_json-wallarm_nginx/gauge-attacks -H node.example.local
Как задать пороговые значения для метрики
При необходимости вы можете указать диапазон значений, при которых утилита collectd-nagios
будет возвращать статус WARNING
или CRITICAL
с помощью параметров -w
и -c
(подробная информация доступна в документации утилиты).
После того, как в файл конфигурации сервиса NRPE добавлены все необходимые команды, перезапустите сервис NRPE, выполнив одну из следующих команд:
sudo service nrpe restart
sudo systemctl restart nrpe
8. На хосте Nagios задайте с помощью конфигурационных файлов хост с WAF‑нодой и набор сервисов, мониторинг которых необходимо осуществлять¶
Сервисы и метрики
В этом документе предполагается, что один сервис Nagios эквивалентен одной метрике.
Например, это можно сделать следующим образом:
-
Создайте файл
/usr/local/nagios/etc/objects/nodes.cfg
со следующим содержимым:define host{ use linux-server host_name node.example.local address 10.0.30.5 } define service { use generic-service host_name node.example.local check_command check_nrpe!check_wallarm_nginx_attacks max_check_attempts 5 service_description wallarm_nginx_attacks }
Этот файл определяет хост
node.example.local
с IP‑адресом10.0.30.5
, и команду для проверки состояния сервисаwallarm_nginx_attacks
, что эквивалентно получению метрикиcurl_json-wallarm_nginx/gauge-attacks
с WAF‑ноды (см. описание командыcheck_wallarm_nginx_attacks
). -
Добавьте в конфигурационный файл Nagios (по умолчанию,
/usr/local/nagios/etc/nagios.cfg
) следующую строку:cfg_file=/usr/local/nagios/etc/objects/nodes.cfg
Это необходимо для того, чтобы Nagios начал использовать данные из созданного ранее файла
nodes.cfg
при следующем запуске. -
Перезапустите сервис Nagios, выполнив одну из следующих команд:
sudo service nagios restart
sudo systemctl restart nagios
Настройка завершена¶
Теперь Nagios осуществляет мониторинг сервиса, связанного с конкретной метрикой WAF‑ноды. При необходимости вы можете определить другие команды и сервисы для проверки интересующих вас метрик.