Network Monitoring

How to monitor Windows host using Nagios

Nagios, now known as Nagios Core, is a free and open-source computer-software application that monitors systems, networks and infrastructure. Nagios offers monitoring and alerting services for servers, switches, applications and services. This article describes how to monitor Windows machines for high CPU load, Disk usage, Memory usage, and Services.

Windows requirement: To monitor Windows Machines you will need to follow several steps and they are:

– Install NSClient++ addon on the Windows Machine.
– Configure Nagios Server for monitoring Windows Machine.
– Add new host and service definitions for Windows machine monitoring.
– Restart the Nagios service.

Setup 1. Install NSClient++ addon on the Windows machine.
See https://www.nsclient.org/ for more details.

The addon acts as a proxy between the Windows machine and Nagios and monitors actual services by communicating with the check_nt plugin. The check_nt plugin already installed on the Nagios Monitoring Server,

Note: this can be done traditionally. Once you’ve downloaded the latest stable version, unzip the NSClient++ files into a new C:NSClient++ directory.

Now open an MS-DOS command prompt from the Start Screen –> Run –> type ‘cmd‘ and press enter and change to the C:NSClient++ directory.

C:NSClient++

Next, register the NSClient++ service on the system with the following command

nsclient++ /install

Finally, install the NSClient++ systray with the following command.

nsclient++ SysTray

Open the Windows Services Manager and right-click on NSClient go to Properties and then ‘Log On‘ tab and click the checkbox that says “Allow service to interact with the desktop“. If it isn’t already allowed, please check the box to allow it to.

Open NSC.INI file located at C:NSClient++ directory and uncomment all
the modules defined in the “modules” section, except for CheckWMI.dll and RemoteConfiguration.dll.

Uncomment the “allowed_hosts” in the “Settings” section and define the IP address of your Nagios Monitoring Server or leave it blank to allow any hosts to connect.

Uncomment the “port” in the “NSClient” section and set to default port ‘12489‘. Make sure to open ‘12489‘ port on Windows Firewall.

Finally, start the NSClient++ service with the following command

nsclient++ /start

If you properly installed and configured, you should see a new icon in the system tray in yellow circle with a black ‘M‘ inside.

Step 2: Configuring Nagios Server and Add Windows Hosts

See how to add hosts on Nagios Server: Here we have the check_nt command defined already and added to the command.cfg file.
This definition command is used by check_nt plugin to monitor Windows services.

A windows-server host template already created in the templates.cfg file.
This template allows you to add new Windows host definitions.

Note: These two files “command.cfg” and “templates.cfg” files can be found at /usr/local/nagios/etc/objects/ directory.

# vi /usr/local/nagios/etc/objects/windows.cfg
# Define a host for the Windows machine we'll be monitoring
# Change the host_name, alias, and address to fit your situation
 define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 172.xxx.xxx.53 ; IP address of the host
}
 Following services are already added and enabled in windows.cfg file.
If you wish to add some more other service definitions that needs to be monitored, you can simple add those definitions to same configuration file. Make sure to change the host_name
for these all services with host_name defined in the above step.
 define service{
use generic-service
host_name winserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
 Add the following service definition to monitor the uptime of the Windows server.
 define service{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
 Add the following service definition to monitor the CPU utilization on the Windows server and generate a CRITICAL alert if the 5-minute CPU load is 90% or more or a WARNING alert if the 5-minute load is 80% or greater.
 define service{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
 Add the following service definition to monitor memory usage on the Windows server and generate a CRITICAL alert if memory usage is 90% or more or a WARNING alert if memory usage is 80% or greater.
 define service{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
 Add the following service definition to monitor usage of the C: drive on the Windows server and generate a CRITICAL alert if disk usage is 90% or more or a WARNING alert if disk usage is 80% or greater.
 define service{
use generic-service
host_name winserver
service_description C: Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
 Add the following service definition to monitor the W3SVC service state on the Windows machine and generate a CRITICAL alert if the service is stopped.
 define service{
use generic-service
host_name winserver
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}
 Add the following service definition to monitor the Explorer.exe process on the Windows machine and generate a CRITICAL alert if the process is not running. 

define service{
use generic-service
host_name winserver
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe

Lastly, uncomment the windows.cfg file in /usr/local/nagios/etc/nagios.cfg.

# vi /usr/local/nagios/etc/nagios.cfg
# Definitions for monitoring a Windows machine
cfg_file=/usr/local/nagios/etc/objects/windows.cfg

Finally, verify the Nagios configuration files for any erros.
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x