How to Monitor Windows Machine in Nagios using NSClient++ Agent

What is NSClient++ :-

NSClient++ a simple yet powerful and flexible monitoring daemon. It was built for Nagios/Icinga/Naemon, but nothing in the daemon is Nagios/Icinga specific and it can and is used in many other scenarios where you want to receive/distribute check metrics. It is entirely possible to use it stand alone as well as the core monitoring system though that is not recommended as it is rather limited.

How to Install NSClient++ :-

Download NSClient++ from below mentioned link :

Installation Steps :-
Run Downloaded File NSClient++ 










The installation has been finished Successfully.


Nagios Core Side Configuration :-

We need login to Nagios core server using putty.
Step 1:- 
 Create A central directory to keep all the Windows.cfg file using below command.
root@WPT:~# mkdir /usr/local/nagios/etc/windows
Now Copy Windows template with the hostname we are going to add. In my case I m adding Host ISHWS69. Use below command to Copy template.
root@WPT:~# cp /usr/local/nagios/etc/objects/windows.cfg /usr/local/nagios/etc/windows/ishws69.cfg

Step 2:- 
Now make highlighted changes into the .cfg file as follow:
root@WPT:~# vi /usr/local/nagios/etc/windows/ishws69.cfg

###############################################################################
# WINDOWS.CFG - SAMPLE CONFIG FILE FOR MONITORING A WINDOWS MACHINE
#
#
# NOTES: This config file assumes that you are using the sample configuration
# files that get installed with the Nagios quickstart guide.
#
###############################################################################




###############################################################################
###############################################################################
#
# HOST DEFINITIONS
#
###############################################################################
###############################################################################

# 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 ishws69 ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 10.0.1.107 ; IP address of the host
}





###############################################################################
###############################################################################
#
# HOST GROUP DEFINITIONS
#
###############################################################################
###############################################################################


# Define a hostgroup for Windows machines
# All hosts that use the windows-server template will automatically be a member of this group

define hostgroup{
hostgroup_name windows-servers ; The name of the hostgroup
alias Windows Servers ; Long name of the group
}





###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################


# Create a service for monitoring the version of NSCLient++ that is installed
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}




# Create a service for monitoring the uptime of the server
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description Uptime
check_command check_nt!UPTIME
}




# Create a service for monitoring CPU load
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}




# Create a service for monitoring memory usage
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}




# Create a service for monitoring C:\ disk usage
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description C:\ Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}



# Create a service for monitoring the W3SVC service
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name ishws69
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}



Save and Exit from the file.
Step 3:- Add ishws69.cfg file path into nagios.cfg file so that Nagios Core can start reading this file.

Open Nagios.cfg configuration file using below command.
root@WPT:~# vi /usr/local/nagios/etc/nagios.cfg
Now add the highlighted line into conf file.
##############################################################################
#
# NAGIOS.CFG - Sample Main Config File for Nagios 4.2.3
#
# Read the documentation for more information on this configuration
# file. I've provided some comments here, but things may not be so
# clear without further explanation.
#
#
##############################################################################


# LOG FILE
# This is the main log file where service and host events are logged
# for historical purposes. This should be the first option specified
# in the config file!!!

log_file=/usr/local/nagios/var/nagios.log



# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
# host groups, contacts, contact groups, services, etc.
# You can split your object definitions across several config files
# if you wish (as shown below), or keep them all in a single config file.

# You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg

# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

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

# Definitions for monitoring a network printer
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg

Save and Exit from the file.
Step 4:- Check Nagios Core configuration file for any error. Using below command.
root@WPT:~# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 4.2.3
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 11-21-2016
License: GPL

Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
Checked 8 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 24 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors: 0
Step 5:- Restart Nagios Core service 

root@WPT:~# /etc/init.d/nagios restart
[ ok ]
Restarting nagios (via systemctl): nagios.service.

Now Access Nagios through Browser and check newly added host should be there.












That's All

!!!Cheers!!!

0 Comments