Выгрузка метрик с помощью утилиты 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 restartsudo 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/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-abnormal -H node.example.localЭта команда позволяет пользователю
nagiosполучить значение метрикиcurl_json-wallarm_nginx/gauge-abnormal(количество обработанных запросов) для хоста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_abnormal, которая будет получать метрику curl_json-wallarm_nginx/gauge-abnormal для WAF‑ноды с полным доменным именем node.example.local, добавьте в файл конфигурации следующую строку:
command[check_wallarm_nginx_abnormal]=/usr/bin/collectd-nagios -s /var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-abnormal -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_abnormal 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-abnormalс WAF‑ноды (см. описание командыcheck_wallarm_nginx_abnormal). -
Добавьте в конфигурационный файл Nagios (по умолчанию,
/usr/local/nagios/etc/nagios.cfg) следующую строку:cfg_file=/usr/local/nagios/etc/objects/nodes.cfgЭто необходимо для того, чтобы Nagios начал использовать данные из созданного ранее файла
nodes.cfgпри следующем запуске. -
Перезапустите сервис Nagios, выполнив одну из следующих команд:
sudo service nagios restartsudo systemctl restart nagios
Настройка завершена¶
Теперь Nagios осуществляет мониторинг сервиса, связанного с конкретной метрикой WAF‑ноды. При необходимости вы можете определить другие команды и сервисы для проверки интересующих вас метрик.
