Мониторить Windows сервера будем с помощью агента NSClient++, у которого есть модуль NRPEListener.dll nrpe:

Часть проверок мы будем собирать через модуль Nagios check_nt часть через модуль check_nrpe.
1. Установим агент NSClient++ на Windows сервер
   32x битная версия 0.3.9
   64x битная версия 0.3.9







2. Настраиваем NSClient++
   Конфигурационный файл C:\Program Files\NSClient++\NSC.ini
   При установке мы уже активировали часть необходимых параметров для работы агента, осталось активировать следующие параметры в разделе [NRPE] и сохранить изменения:
port=5666 allow_arguments=1
3. Заходим в Services и устанавливаем галочку в закладке Log On (Allow service to interact with desktop) и запускаем сервис NSClient++
   
   
Необходимые действия на стороне Windows сервера завершены. Переходим к Nagios серверу.
1. Определяем проверки в файле commands.cfg
   Проверка с помощью плагина check_nt -s Password Пароль который мы указывали при установке
define command{
command_name    check_nt
command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s Password -v $ARG1$ $ARG2$
}
   Проверка памяти с помощью плагина check_nrpe и CheckMem
type=physical The amount of physical memory currently available, in bytes. This is the amount of physical memory that can be immediately reused without having to write its contents to disk first. It is the sum of the size of the standby, free, and zero lists.
define command{
command_name    check_memory_physical
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAll=long type=physical
}
type=page The maximum amount of memory the current process can commit, in bytes. This value is equal to or smaller than the system-wide available commit value.
define command{
command_name    check_memory_page
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAll=long type=page
}
type=virtual Number of pages of swap currently in use (note – it does NOT = (physical + swap) as on *nix boxes) According to M$ this is: Size of unreserved and uncommitted memory in the user mode portion of the virtual address space of the calling process, in bytes.
define command{
command_name    check_memory_virtual
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAll=long type=virtual
}
2. Определяем Host Definition и Service definition в файле /etc/nagios/hosts/Windows1.cfg
# Host Definition
define host{
# Name of host template to use
               use                           generic-host
               host_name                     Windows1
               address                       192.168.1.105
               check_command                 check-host-alive
               contact_groups                admins
               max_check_attempts            10
               notification_interval         120
               notification_period           24x7
               notification_options          d,u,r
}
# Service definition
define service{
# Name of service template to use
               use                           generic-service
               host_name                     Windows1
               service_description           PING
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r
               check_command                 check_ping!250.0,20%!500.0,60%
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           Uptime
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r
               check_command                 check_nt!UPTIME
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           CPU Load
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r
               check_command                 check_nt!CPULOAD!-l 5,80,90
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           SWAP
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r
               check_command                 check_nt!MEMUSE!-w 80 -c 90
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           Memory Physical
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r  
               check_command                 check_memory_physical!80!90!
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           Memory Page
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r  
               check_command                 check_memory_page!80!90!
}
define service{
               use                           generic-service
               host_name                     Windows1
               service_description           Memory Virtual
               is_volatile                   0
               check_period                  24x7
               max_check_attempts            3
               normal_check_interval         1
               retry_check_interval          1
               contact_groups                admins
               notification_interval         120
               notification_period           24x7
               notification_options          c,r  
               check_command                 check_memory_virtual!80!90!
}
3. Добавляем данный файл в nagios.cfg
cfg_file=/etc/nagios/hosts/Windows1.cfg
Проверяем конфигурацию и перезагружаем Nagios
# nagios -v /etc/nagios/nagios.cfg # service nagios restart
4. В результате получаем проверку Windows сервера:
