⚙️ Паровой сервер ROADIT

Добавляем Windows-хост в Nagios: Паровая механика мониторинга

Сегодня мы отправляемся в инженерный рейд по настройке сетевого мониторинга. Наша задача — подключить сервер под управлением 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.

  1. Загрузите дистрибутив NSClient++ (MSI-пакет x64) с официального репозитория проекта на GitHub.
  2. Запустите установку от имени Администратора.
  3. На этапе выбора модулей включите 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 и в нашем Телеграф-канале.
📋 Все команды

Оставьте комментарий