Сегодня мы отправляемся в инженерный рейд по настройке сетевого мониторинга. Наша задача — подключить сервер под управлением Windows к центральному узлу Nagios Core, чтобы снять показатели с его ключевых узлов, словно показания с манометров викторианского парохода.
В этом руководстве мы разберем сквозную настройку агента NSClient++, передачу данных по протоколу NRPE (Nagios Remote Plugin Executor), создание конфигурационных файлов на стороне Linux и решение типичных проблем сетевого взаимодействия.
Архитектура связки Nagios и NSClient++
Прежде чем крутить вентили, разберем схему передачи данных. Сервер Nagios сам по себе не умеет заглядывать во внутренности реестра или WMI Windows. Для этого на целевую машину устанавливается агент NSClient++ (демон nscp), который опрашивает систему и отдаёт данные обратно серверу по протоколу NRPE (порт TCP 5666) или check_nt (порт TCP 12489).

Шаг 1. Подготовка и настройка Windows-хоста (NSClient++)
Служба NSClient++ выступает в роли транслятора между Unix-командами Nagios и системными счетчиками Performance Counters Windows.
- Загрузите дистрибутив NSClient++ (MSI-пакет x64) с официального репозитория проекта на GitHub.
- Запустите установку от имени Администратора.
- На этапе выбора модулей включите Common plugins, NRPE server и NSClient server.
После завершения установки откройте конфигурационный файл %ProgramFiles%\NSClient++\nsclient.ini в текстовом редакторе ( Notepad++ или VS Code от имени Администратора) и привести его к следующему виду:
[/modules]
CheckSystem = enabled
CheckDisk = enabled
CheckExternalScripts = enabled
NRPEServer = enabled
[/settings/default]
; Разрешаем подключения ТОЛЬКО с IP-адреса нашего Nagios-сервера
allowed_hosts = 192.168.1.50
[/settings/NRPE/server]
port = 5666
use ssl = false
insecure = false
allow arguments = true
allow nasty characters = false
[/settings/system/WINDOWS]
; Включаем поддержку проверки служб и процессов💡 Совет
Никогда не оставляйте allowed_hosts = * на продакшен-серверах! Это всё равно что оставить открытым топку котла на пароходе без присмотра. Всегда четко ограничивайте IP-адрес сервера мониторинга.
Перезапустите службу NSClient++ через PowerShell для применения настроек:
Restart-Service nscp
Get-Service nscpШаг 2. Настройка фаервола Windows Firewall
Чтобы трафик свободно проходил по медной магистрали порта 5666, откроем входящий порт в брандмауэре Windows с помощью PowerShell:
New-NetFirewallRule -Name "Nagios_NRPE" `
-DisplayName "Nagios NRPE Listener (TCP 5666)" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 5666 `
-Action Allow `
-RemoteAddress 192.168.1.50Шаг 3. Конфигурация Nagios Core (Linux-side)
Переходим к нашему центральному пульту управления на машине под управлением Linux (Ubuntu/Debian).
Установка плагина check_nrpe
Убедимся, что на сервере установлен бинарный плагин проверки NRPE:
sudo apt update
sudo apt install nagios-nrpe-plugin -yПроверьте наличие файла /usr/lib/nagios/plugins/check_nrpe.
Объявление команды check_nrpe
Перед использованием команды в описании сервисов её необходимо зарегистрировать. Откройте файл шаблонов команд (например, /usr/local/nagios/etc/objects/commands.cfg):
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}Создание конфигурации Windows-хоста
Создадим отдельный конфигурационный файл /usr/local/etc/objects/windows_server.cfg:
# Описание целевого хоста Windows
define host {
use windows-server
host_name winserver01
alias Main Enterprise Windows Server
address 192.168.1.100
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
# Проверка загрузки процессора (CPU)
define service {
use generic-service
host_name winserver01
service_description CPU Load
check_command check_nrpe!check_cpu!-a show-all warning=80 critical=90
}
# Проверка использования оперативной памяти (RAM)
define service {
use generic-service
host_name winserver01
service_description Memory Usage
check_command check_nrpe!check_memory!-a type=physical max-warn=80% max-crit=90%
}
# Проверка свободного места на диске C:
define service {
use generic-service
host_name winserver01
service_description Disk C: Space
check_command check_nrpe!check_drives!-a drive=c show-all warning=80% critical=90%
}
# Проверка состояния критической службы Windows (например, Print Spooler)
define service {
use generic-service
host_name winserver01
service_description Service - Print Spooler
check_command check_nrpe!check_service!-a service=spooler
}Подключение файла к основному конфигу Nagios
Откройте /usr/local/nagios/etc/nagios.cfg и добавьте строчку импорта:
cfg_file=/usr/local/nagios/etc/objects/windows_server.cfgШаг 4. Проверка работы и отладка
Перед перезапуском демона проверим связь ручным вызовом плагина с Linux-сервера.
/usr/lib/nagios/plugins/check_nrpe -n -H 192.168.56.100 -c check_cpu -a show-all
Если ответом пришла строчка статуса OK и метрики perfdata — паровой котёл запущен успешно!
Теперь проверяем синтаксис всех конфигурационных файлов Nagios:
sudo /usr/local/nagios/bin/nagios - v /usr/local/nagios/etc/nagios.cfgЕсли синтаксических ошибок нет (Total Errors: 0), перезапускаем службу Nagios:
sudo systemctl restart nagios
Разбор типовых ошибок (Troubleshooting)
Если манометры молчат, а Nagios выдает ошибки, воспользуйтесь шпаргалкой системного механика:
CHECK_NRPE: Error - Could not complete SSL handshake.
- Причина: Несовпадение настроек SSL/TLS между агентом и плагином.
- Решение: Убедитесь, что в
nsclient.iniзаданоuse ssl = true. Если используется версия без SSL, добавьте ключ-nпри вызовеcheck_nrpe.
CHECK_NRPE: Socket timeout after 10 seconds.
- Причина: Трафик блокируется фаерволом или служба
nscpостановлена. - Решение: Проверьте статус службы
Get-Service nscpна Windows и убедитесь в наличии правила Windows Firewall для порта 5666.
Unknown command: check_cpu
- Причина: В
nsclient.iniне включен модульCheckSystem. - Решение: Проверьте секцию
[/modules]и убедитесь, чтоCheckSystem = enabled.
Современная альтернатива: Переход на NCPA
Хотя NSClient++ остается проверенным временем ветераном, команда Nagios активно развивает официальный агент NCPA (Nagios Cross-Platform Agent).
- Преимущества NCPA: Единая архитектура для Windows, Linux и macOS, нативный REST API, встроенный веб-интерфейс и передача данных исключительно по защищенному протоколу HTTPS (порт 5693).
- Если вы строите новую инфраструктуру с нуля — рекомендуем обратить внимание на NCPA как на более современный замену традиционному NRPE.
⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды