NSClient++ и NRPE: Windows-серверы в Nagios без отдельного дашборда
Подключили Windows-серверы клиента к Nagios через NSClient++ 0.3.x и NRPE - дисковые квоты, службы и свободное место теперь в одном месте вместе с Linux.
NSClient++ 0.3.x позволяет мониторить Windows-серверы через NRPE-совместимый протокол из Nagios
У клиента смешанная среда: несколько Linux-серверов и рядом с ними три Windows Server 2003 - файловый сервер с квотами, сервер печати и контроллер домена. Linux-хосты давно сидят в Nagios, проверяются через NRPE, алерты летят куда надо. Windows до этой недели жили отдельной жизнью: либо ручной осмотр, либо встроенный Performance Monitor, который никто не открывает, пока не припечёт.
Всё изменилось, когда файловый сервер незаметно набрал диск до 94% - пользователи начали жаловаться на ошибки сохранения, а мы узнали об этом постфактум. Хранить мониторинг в двух разных системах - значит иметь слепые пятна. Пора было закрыть вопрос.
Почему NSClient++ и NRPE
Вариантов мониторинга Windows из Nagios несколько. Можно идти через SNMP - работает, но настройка SNMP под Windows капризная, а трапы не всегда надёжны. Есть check_nt - старый плагин, работает через TCP-порт 1248, протокол примитивный и без шифрования. Есть WMI-проверки с check_wmi_plus, но тут нужен Perl на сервере мониторинга и открытые WMI-порты через файрволл.
NSClient++ 0.3.x реализует NRPE-совместимый сервер прямо на Windows. Сторона Nagios делает те же самые check_nrpe-вызовы, которые уже работают против Linux-хостов. Разница снаружи нулевая - тот же check_nrpe, те же команды в конфиге Nagios. Внутри Windows-хоста крутится NSClient++, который принимает запросы и выполняет встроенные проверки.
Это и привлекло: минимальное расхождение в инструментарии, один плагин на стороне сервера мониторинга.
Установка и первая конфигурация
NSClient++ ставится как Windows-служба, инсталлятор простой. Конфиг - файл NSC.ini в директории установки. Ключевые секции: [modules] - какие плагины загружать, и [NRPE] - порт, разрешённые хосты.
Для наших задач включили три модуля:
- CheckDisk.dll - проверки дискового пространства и квот.
- CheckSystem.dll - CPU, память, состояние служб Windows.
- NRPEListener.dll - собственно NRPE-совместимый листенер.
В секции [NRPE] прописали IP-адрес сервера Nagios в allowed_hosts - без этого NSClient++ не ответит. Порт оставили стандартный 5666, тот же, что и у Linux-хостов с NRPE.
На стороне Nagios добавили хосты и сервисы. Конфиг ничем не отличается от Linux-хостов, только команды другие - check_drivesize вместо check_disk, check_service вместо check_procs. NSClient++ поддерживает передачу параметров через NRPE args, так что пороги задаём прямо в Nagios без редактирования конфига на Windows-хосте.
Что в итоге мониторим
На файловом сервере - три вещи: свободное место на каждом разделе (warning на 80%, critical на 90%), состояние службы File Replication Service и дисковые квоты через WMI-обёртку в CheckDisk.
С квотами пришлось повозиться. CheckDisk умеет проверять использование квот, но синтаксис не очевидный - нужно явно указывать имя пользователя или группы. Сделали отдельную проверку на группу «Все», которая показывает сводное использование по разделу с квотами. Не идеально, но достаточно: мы видим, когда суммарное заполнение ползёт к порогу, и можем разбираться с конкретными пользователями вручную.
На контроллере домена добавили проверки служб: Netlogon, DNS Server, Kerberos Key Distribution Center. Если хоть одна остановилась - алерт немедленно. Там же смотрим загрузку CPU и память - не из-за паранойи, просто DC у клиента небольшой, и неожиданные всплески там были пару раз без видимой причины.
На сервере печати - состояние Spooler и место на системном разделе. Spooler имеет нехорошую привычку зависать, и раньше об этом узнавали от пользователей.
Что не понравилось
Проверка с параметрами через NRPE требует явного включения allow_arguments и allow_nasty_meta_chars в конфиге NSClient++. Без них параметры просто не передаются - NSClient++ молча игнорирует аргументы. Это немного раздражает, потому что по умолчанию оба параметра выключены из соображений безопасности. Включили, но ограничили разрешённые хосты и закрыли 5666 на файрволле для всех, кроме сервера Nagios.
Версия 0.3.x ещё не устоялась в плане документации - часть параметров CheckDisk приходилось нащупывать методом проб. Сообщество активное, форум есть, но официальная документация местами скудная.
Итог
Сейчас вся инфраструктура клиента видна в одном Nagios. Linux-хосты, Windows-серверы, сетевые устройства через SNMP - один интерфейс, одни правила эскалации, одна история алертов. Когда на файловом сервере диск добирается до 80%, мы знаем об этом до пользователей, а не после.
Для сопровождения смешанных сред это принципиальный момент - чем меньше разрозненных инструментов, тем меньше шансов пропустить что-то важное в зазорах между ними.
- Nagios: алерты, а не графики · 21 февраля 2005
- Nagios 3.0: читаем changelog бета-версии и считаем, что нас наконец-то услышали · 30 января 2008