
В прошлой статье (http://stproject.blogspot.com/2009/02/nagios-nrpe.html) я рассказывал о том как можно проверять удаленные *nix хосты с помощью NRPE. С помощью NRPE можно проверять Unix системы, но как показывает практика мир не идеален и приходиться работать еще и с Windows.
Сегодня речь пойдет о мониторинге Windows серверов с помощью Nagios, NSClient++ и команды check_nrpe.
Немного истории
Изначально для проверки Windows серверов предлагалось использовать SNMP или утилиту NSclient. Запас возможностей NS был очень мал, его приходилось «подстраивать» под каждую конкретную версию/локализацию Windows, к тому же в мире *nix программа написанная на Delphi будет использоваться с подозрениям, из религиозных соображений
. В общем проект со временем заглох и перестал развиваться (последняя версия считает Windows 2000 новинкой).
Со временем появилась альтернатива: NSClient++, он был написан на C++, обладал внушительным арсеналом встроенных проверок и возможностью создания новых, работающим с несколькими протоколами и т.д.
Общая информация
На данный момент NSClient++ поддерживаются следующие ОС:
- NT4 (SP5?)
- Windows 2000 W2K
- Windows XP
- Windows 2003
- Windows Vista
[мной протестирован на Windows Server 2008 x86/64 в основном работает]
Поддерживаемые архитектуры:
- Win32
- x64 (AMT64/EMT64)
- IA64 (Itanium)
Поддерживаемые протоколы:
- nsclient (устаревший)
- NRPE
Установка NSClient++
Начинаем как всегда со скачки NSClient++ с официального сайта: http://trac.nakednuns.org/nscp/downloads
Будьте внимательны, выберите последнюю версию для своей архитектуры, лучше всего выкачивать MSI архивы, т.к. в будущем можно автоматизировать процесс установки.
Устанавливаем клиент со стандартными настройками, возможно вам стоит включить NSClient++-tray, этот модуль будет показывать в трее иконку по клику на которую можно посмотреть лог работы клиента.
В процессе установки по идее не должно быть ошибок или подводных камней, поэтому перейдем к самому интересному.
Настройка NSClient++
Если вы ставили NSClient++ со стандартными параметрами, то файл конфигурации должен находиться по адресу: C:\Program Files\NSClient++\SNC.ini
Для редакторования конфига лучше всего использовать какой-нибудь текстовый редактор с подсветкой синтаксиса, т.к. от количества коментариев может конфиг становиться почти нечитабельным.
Формат файла как у типичного ini файла Windows, конфиг разбит на категории [category name], параметры описываются по правилу «varible=value».
[modules]
В этом разделе описывается какие модули будут включены в NSC++ (по умолчанию все выключены). Включить/выключить модуль можно убрав или поставив комментарий перед названием модуля.
Я не буду описывать все возможные модули, только те которые в первую очередь необходимы.
FileLogger.dll – модуль «пишущий» лог проверок
CheckSystem.dll – модуль для проверки основных параметров системы
CheckDisk.dll – модуль для проверки дисков
NRPEListener.dll – модуль «прослушивания» порта «NRPE» (позволяет проверять с помощью команды check_nrpe)
SysTray.dll – модуль который показывает иконку в трее для управления NSClient++
CheckEventLog.dll – модуль позволяющий проверять EventLog
эти модули можно включить убрав напротив них комментарии.
[Settings]
allowed_hosts – список хостов с которых будет производиться проверка (хосты прописываются через запятую).
use_file – если равен «1″, то конфигурацию для NSClient++ нужно брать из этого ini файла, если «0″ то параметры будут перенесены в реестр (поверьте удобнее 1
).
[NRPE]
секция отвечает за настройки модуля прослушивания NRPE
port – порт который будет слушать NSClient++ (по умолчанию 5666)
allow_arguments – если >0 значит команды проверки млгут использовать аргументы, в виде $ARAG1, $ARG2…
use_ssl – если «1″ то использовать SSL если «0″, то нет (если SSL выключен, то команда check_nrpe должна выполняться с опцией «-n»)
[NRPE Handlers]
здесь можно описать команды в стиле NRPE:
check_hello=scripts\hello.bat |
Папка «scripts» должна должна быть создана в папке с установкой NSCleint++ (C:\program Files\NSClient++\).
После окончания настройки перезагрузите сервис NSClient++
net stop nsclientpp
net start nsclientpp |
Настройка Nagios
Конфигурирование проверок хостов с NSClient++ ничем не отличается от NRPE.
Объявление команды для Nagios («-n при выключенном SSL»):
define command{
command_name check_nsc_load
command_line $USER1$/check_nrpe -n -H $HOSTADDRESS$ -c checkCPU -a MaxWarn=89% MaxCrit=90% time=5m ShowAll
}
Описываем сервис:
define service{
host_name win-2008-server
service_description LOAD
use LOAD-service
check_command check_nsc_load
}
Все можем пользоваться.
Вот список некоторых команд с параметрами (полный список)
Max – максимум
Min – минимум
Warn – предупреждение
Crit – критический
Free – свободно
Used – импользовано
ShowAll – если есть то выводиться более подробная информация о проверке
CheckDriveSize
Проверка диска/дисков.
Аргументы:
MaxWarnFree
MaxCritFree
MinWarnFree
MinCritFree
MaxWarnUsed
MaxCritUsed
MinWarnUsed
MinCritUsed
Drive – буква диска, если опустить то проверяются все диски
FilterType – занчения, FIXED, CDROM, REMOVABLE, REMOTE (по умолчанию FIXED)
CheckAll – проверить все диски
CheckAllOthers – проверить все диски в соответствии с Filter исключая те что были прописаны в Drive.
CheckCPU
Проверка загруженности CPU.
warn – процент загруженности
crit – процент загруженности
Time – время за которое считаеться загрузка (10m, 20s, 1h)
nsclient – режим совместимости с nsclient
CheckMem
Проверка памяти.
Показатели в %:
MaxWarn
MaxCrit
MinWarn
MinCrit
ShowAll – подробный вывод
type – (page, paged, virtual, physical), page – подкачка, physical – физической.
CheckServiceState
Проверка состояния системного сервиса.
ShowFail – если есть, то выводяться только те сервисы которые «не запустились»
service=state – поле «service» имя сервиса (лучше всего брать в ординарные кавычки » ‘ «) можно взять и Start->Run->srevices.msc

CheckAll – проверить что все сервисы у которых тип запуска «Auto start» запущены
exclude – имя сервиса исключаемого из checkAll
ShowAll – подробный режим
Проверка состояния процесса в памяти.
ShowAll – подробный режим
process=state – process – имя процесса, state – состояние (notepad.exe=started)
ignore-perf-data – не выдавать performance-date
(Max|Min)(Warn|Crit)Count – количество процессов
Полный список команд и параметров http://trac.nakednuns.org/nscp/wiki/CheckCommands