Did You Know?
Donate to TecMint

LFCS - Linux Foundation Certified SysAdmin - Exam Preparation Guide

How to Add Windows Host to Nagios Monitoring Server

Download Your Free eBooks NOW - 10 Free Linux eBooks for Administrators

This article describes how to monitor Windows machines “private” services such as CPU load, Disk usage, Memory usage, Services, etc. For this, we required to install an NSClient++ addon on the Windows machine. The addon acts 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, if you followed our Nagios installation guide.

We assume that you’ve already installed and configured Nagios server according to our following guides.

  1. How to Install Nagios 4.0.1 on RHEL/CentOS 6.x/5.x and Fedora 19/18/17
  2. Add Linux Host to Nagios Monitoring Server

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

  1. Install NSClient++ addon on the Windows Machine.
  2. Configure Nagios Server for monitoring Windows Machine.
  3. Add new host and service definitions for Windows machine monitoring.
  4. Restart the Nagios Service.

To make this guide simple and easier, a few of configuration already done for you in the Nagios installation.

  1. A check_nt command definition already added to the command.cfg file. This definition command is used by check_nt plugin to monitor Windows services.
  2. A windows-server host template already created in the templates.cfg file. This template allows you to add new Windows host definitions.

The above two files “command.cfg” and “templates.cfg” files can be found at /usr/local/nagios/etc/objects/ directory. You can modify and add your own definitions that suits your requirement. But, I’d recommend you to follow the instructions described in this article and you will be successfully monitoring your windows host in less than 20 minutes.

Step 1: Installing NSClient++ Agent on Windows Machine

Please use the below instructions to install NSClient++ Agent on the Remote Windows Host. First download the latest stable version NSClient++ 0.3.1 addon source files, which can be found at below link.

  1. http://sourceforge.net/projects/nscplus/

Once you’ve downloaded latest stable version, unzip the NSClient++ files into a new C:\NSClient++ directory.

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


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 check box that says “Allow service to interact with the desktop“. If it isn’t already allowed, please check the box to allow it to.

Install NSClient++

Install NSClient++

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.

;# A list with DLLs to load at startup.
;  You will need to enable some of these for NSClient++ to work.
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; *                                                               *
; * N O T I C E ! ! ! - Y O U   H A V E   T O   E D I T   T H I S *
; *                                                               *
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; NSCA Agent is a new beta module use with care!
; LUA script module used to write your own "check deamon" (sort of) early beta.
; Script to check external scripts and/or internal aliases, early beta.
; Check other hosts through NRPE extreme beta and probably a bit dangerous! :)

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.

;  This is a comma-delimited list of IP address of hosts that are allowed to talk to the all daemons.
;  If leave this blank anyone can access the deamon remotly (NSClient still requires a valid password).
;  The syntax is host or ip/mask so will allow anyone on that subnet access

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

;  This is the port the NSClientListener.dll will listen to.

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

nsclient++ /start

If your 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

Now Login into Nagios Server and add some object definitions in Nagios configuration files to monitor new Windows machine. Open windows.cfg file for editing with Vi editor.

[root@tecmint]# vi /usr/local/nagios/etc/objects/windows.cfg

A sample Windows host definition already defined for the Windows machine, you can simply change the host definition like host_name, alias, and address fields to appropriate values of your Windows machine.


# 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    ; 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.

[root@tecmint]# vi /usr/local/nagios/etc/nagios.cfg
# Definitions for monitoring a Windows machine

Finally, verify the Nagios configuration files for any erros.

[root@tecmint]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

If the verification process throws any error messages, fix those errors until the verification process completes without any error messages. Once’ you fix those errors, restart the Nagios service.

[root@tecmint]# service nagios restart

Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

That’s it. Now go to Nagios Monitoring Web interface at “http://Your-server-IP-address/nagios” or “http://FQDN/nagios” and Provide the username “nagiosadmin” and password. Check that the Remote Windows Host was added and is being monitored.

Nagios Monitor Windows Host

Nagios Monitor Windows Host

That’s it! for now, in my up-coming article I will show you how to add Printer and Switches to Nagios Monitoring Server. If you’re having any difficulties while adding Windows host to Nagios. Please do comment your queries via comment section, till then stay tuned to Tecmint.com for more such kind of valuable articles.

Ravi Saive

Owner at TecMint.com
Simple Word a Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux.

Your name can also be listed here. Work as a Paid freelancer/writer at TecMint.
Download Free eBooks
Advanced Bash-Scripting Guide
Linux Bible
A Newbie's Getting Started Guide to Linux
Ubuntu Linux Toolbox: 1000+ Commands

44 Responses

  1. Nicolargo says:

    You can also used the combo: Glances on the Windows host and CheckGlances on the Nagios server.

    Have a look on it here: https://github.com/nicolargo/checkglances

  2. Freman says:

    Hi Ravi,
    Do you have any userful plugins to monitor windows hosts’ interfaces traffic for nagios?
    I had used the check_traffic.sh tools , but it was not work well for me.
    I need the one can automatically discover the interfaces and monitor those.

    Any suggestion is appriciate for me.

  3. Sarith says:

    Hi ..

    After I downloaded NSCP- and setup it require ip of nagios server and password but I don’t understand about pasword .What is password ? ANd I also get error : “NSClient – ERROR: Invalid password” . Can you help me ?


    • Gerard says:

      Hello, I’m having issues also with this “Invalid password” when the password is correct but still this error occur.

      Is there any working NSClient you can give?

      • sandeep suman says:

        hi sir, i am also getting the same problem of invalid password when i try to see added host on my nagios server…… its a serious problem. all passwords are correct but still a problem..

  4. hung says:

    what if i want to add another windows host for monitoring?thanks

  5. Oded Gold says:


    These instructions are great but when I tried to install the NSClient++ from the download link on a virtual machine I get the following error message

    “The installation is not supported by this processor type”

    Does anyone have a solution for this?

  6. sk says:

    Hi Ravi, after adding Windows host in Nagios server getting CRITICAL – Socket timeout after 20 seconds error for all services expect ping, need your help in solving this issue.

  7. Madura says:


    I followed your instructions and set Nagios to monitor one of my Windows machine, it works great. So thank you so…much. My problem is when I try to monitor a another windows machine, it does not work.

    These are the steps I followed,

    1) Created a new .CFG file called newhost.cfg and added the details related to that machine.

    2) Edited the nagios.cfg file to append the newhost.cfg file.

    3) Installed NSClient++ and did the necessary configurations.

    But finally i’m getting this error when I try to restart the nagios service.
    Running configuration check… CONFIG ERROR! Restart aborted. Check your Nagios configuration.

  8. subbu says:


    My nagios server is publicly accessible on the internet. and I would like to monitor windows hosts which are in private network ex: In such cases what is the better solution.

    Please Help me.

  9. chandu says:

    Hello every one

    i have installed the nagios but mail notification is not working. and how add the second machine in the server.
    i have added …
    vi /usr/local/nagios/etc/objects/windows.cfg using by the command…

    define host{

    use windows-server ; Inherit default values from a Windows server template (make sure you keep this line!)

    host_name winserver

    alias My Windows Server



    but its not showing second one …

    please help me about the issue !



  10. Ashish says:

    Hi Ravi,

    Please guide how can we add multiple windows or Linux Host in Nagios Server.

    • Ravi Saive says:

      I will write a detailed article on how to add Linux and Windows hosts to Nagios Server in my upcoming article.

  11. Arun says:


    I need monitor Windows log file and a parse a particular word from there. My Nagios in CentOS 6. Based on that parsed word, have to show the server is on/off in Nagios dashboard. Can you please help on that ?


  12. Kevin Vu says:

    Hello Ravi Saive,

    Can you help me to unlock the Nagios password?

    • Ravi Saive says:

      Please run the following command to reset/unlock Nagios password.

      # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  13. sanyog says:

    /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg , i try the following command it reply /usr/local/nagios/bin/nagios no such files or directory . so i manually create directory even it replay same msg.

  14. Jonathan Baird says:


    Could you please help me with changing the port on a remote Windows host? I need to monitor 8 remote hosts at one particular site, so I need to come in on different ports to access the 8 machines. Is there a way to change the port the NSClient listens on from 12489? I have added “port – 12490″ and restarted all the services etc but this doesn’t seem to work.

    • Ravi Saive says:

      You can change the NSClient++ port by editing the NSC.ini file and change port number from 12489 to 12490 and restart the NSClient++ service. And also at Nagios server commmads.cfg file, make changes as shown.

      check_nt -p 12489 argument in /usr/local/nagios/etc/objects/commands.cfg
  15. Vishal Wadkar says:


    Ravi gr8 Artical but After installing nagios and opening web page I get below error when clicking any of the tab in homepage of nagios core

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.
    Apache/2.2.15 (CentOS) Server at Port 80

    • Ravi Saive says:

      It seems that your nagios configuration is incorrect. You should check your error logs for the problem. Another problem is, may be your SELinux is enabled, If yes, just run the following command to grant permission on the nagios folder.

      # chcon -R -t httpd_sys_content_t /usr/local/nagios
  16. Krishna Mohan says:

    Hi Ravi,

    I have a one question. i have installed nrpe client in one linux sever and have monitoring service and server in the host server..

    Now i need to install a new pulgin in client machine it is not available on the below mentioned location. an you please tell me the steps how to install a new pulgin in the client machine.

    /usr/local/nagios/libexec in this location.

    Thanks in advance.

    • Ravi Saive says:

      This means your client plugin installation was unsuccessful. Please try to follow instructions carefully.

      • Krishna Mohan says:

        Thanks for reply. I have installed client pulgin,it was installed successfully i am able to monitor .But i need to monitor a new service like file utilisation of the client in host. For that we dont have a perdefined plugin so i have download a plugin from the google.. how to install nee service plugin.

        Thanks in advance.

  17. Ramesh says:

    Great! i have not get any problem to follow this instruction.

  18. Swamy says:

    Recently 4 days back one of my remote server has stopped for 1 day, but i didn’t see the HOST DOWN alert in the nagios as well as no notification mail. But i can able to see Current users and some other alerts that are working fine..

    i have checked uptime in the remote server today that is showing like ‘up 4 days 6:21, 8 users, load average: 0.26, 0.42, 0.44, but this is not updated in the Nagios it is still showing like—–> ‘UP (for 32d 3h 36m 35s)’ even i have restarted nagios also..

    Can you help me what is the problem?

    This is the command for Ping i have written in the commands.cfg

    # ‘check_ping’ command definition
    define command{
    command_name check_ssh_ping
    command_line /usr/local/nagios/libexec/check_by_ssh -H $HOSTADDRESS$ -C “/usr/local/nagios/libexec/check_ping -H $HOSTADDRESS$ -w 100.0,80% -c 150.0,100% -p 5″

  19. Amit says:


    This the grate article. Help many person like me.

    I want know can we add hosts as MAC ID instead of IP address?

  20. ON Sophearak says:

    When I added windows host to Nagios, it work. But it doesn’t check process such as cpu, memory etc…. I need your help!

    • Ravi Saive says:

      Please check the instructions correctly, as we alredy included the steps to monitor cpu and memory in the article..

  21. Rohit says:

    Windows client has been added but all services in services tab shows critical

  22. Steve says:

    after i configure this, i have found issue below. How to fix it? Please help to support this. thanks

    Drive Space
    CRITICAL 11-22-2014 22:01:40 0d 11h 49m 8s 3/3 (Return code of 127 is out of bounds – plugin may be missing)

    CPU Load
    CRITICAL 11-22-2014 22:02:41 0d 11h 48m 9s 3/3 (Return code of 127 is out of bounds – plugin may be missing)

    CRITICAL 11-22-2014 22:03:38 0d 11h 47m 11s3/3 (Return code of 127 is out of bounds – plugin may be missing)

    Memory Usage
    CRITICAL 11-22-2014 22:04:36 0d 11h 46m 12s3/3 (Return code of 127 is out of bounds – plugin may be missing)

    NSClient++ Version
    CRITICAL 11-22-2014 22:05:36 0d 11h 45m 13s 3/3 (Return code of 127 is out of bounds – plugin may be missing)

    CRITICAL 11-22-2014 22:06:33 0d 11h 44m 15s 3/3 (Return code of 127 is out of bounds – plugin may be missing)

    CRITICAL 11-22-2014 21:57:33 0d 11h 43m 16s 3/3 (Return code of 127 is out of bounds – plugin may be missing)

    • Ravi Saive says:

      Most likely due to file permissions, make sure your plugin directory “/usr/local/nagios/libexec” owned by Nagios user and have proper permissions to execute.

      • Steve says:

        @Ravi Saive,

        The first I, wanna to say thanks you for your reply… and the second I have follow your guide step by step but when I check in “/usr/local/nagios/libexec” show below:

        [root@localhost libexec]# ll
        total 6988
        -rwxr-xr-x. 1 nagios nagios 179258 Nov 21 18:19 check_apt
        -rwxr-xr-x. 1 nagios nagios 2252 Nov 21 18:19 check_breeze
        -rwxr-xr-x. 1 nagios nagios 179683 Nov 21 18:19 check_by_ssh
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_clamd -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 137005 Nov 21 18:19 check_cluster
        -r-sr-xr-x. 1 root nagios 175282 Nov 21 18:19 check_dhcp
        -rwxr-xr-x. 1 nagios nagios 174413 Nov 21 18:19 check_dig
        -rwxr-xr-x. 1 nagios nagios 193388 Nov 21 18:19 check_disk
        -rwxr-xr-x. 1 nagios nagios 9290 Nov 21 18:19 check_disk_smb
        -rwxr-xr-x. 1 nagios nagios 189067 Nov 21 18:19 check_dns
        -rwxr-xr-x. 1 nagios nagios 85051 Nov 21 18:19 check_dummy
        -rwxr-xr-x. 1 nagios nagios 3350 Nov 21 18:19 check_file_age
        -rwxr-xr-x. 1 nagios nagios 6316 Nov 21 18:19 check_flexlm
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_ftp -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 175384 Nov 21 18:19 check_hpjd
        -rwxr-xr-x. 1 nagios nagios 335868 Nov 21 18:19 check_http
        -r-sr-xr-x. 1 root nagios 181947 Nov 21 18:19 check_icmp
        -rwxr-xr-x. 1 nagios nagios 146131 Nov 21 18:19 check_ide_smart
        -rwxr-xr-x. 1 nagios nagios 15124 Nov 21 18:19 check_ifoperstatus
        -rwxr-xr-x. 1 nagios nagios 12601 Nov 21 18:19 check_ifstatus
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_imap -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 6888 Nov 21 18:19 check_ircd
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_jabber -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 157666 Nov 21 18:19 check_ldap
        lrwxrwxrwx. 1 root root 10 Nov 21 18:19 check_ldaps -> check_ldap
        -rwxr-xr-x. 1 nagios nagios 158068 Nov 21 18:19 check_load
        -rwxr-xr-x. 1 nagios nagios 5989 Nov 21 18:19 check_log
        -rwxr-xr-x. 1 nagios nagios 21481 Nov 21 18:19 check_mailq
        -rwxr-xr-x. 1 nagios nagios 144237 Nov 21 18:19 check_mrtg
        -rwxr-xr-x. 1 nagios nagios 145290 Nov 21 18:19 check_mrtgtraf
        -rwxr-xr-x. 1 nagios nagios 190840 Nov 21 18:19 check_mysql
        -rwxr-xr-x. 1 nagios nagios 175310 Nov 21 18:19 check_mysql_query
        -rwxr-xr-x. 1 nagios nagios 157374 Nov 21 18:19 check_nagios
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_nntp -> check_tcp
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_nntps -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 179778 Nov 21 18:19 check_nt
        -rwxr-xr-x. 1 nagios nagios 184113 Nov 21 18:19 check_ntp
        -rwxr-xr-x. 1 nagios nagios 173118 Nov 21 18:19 check_ntp_peer
        -rwxr-xr-x. 1 nagios nagios 171363 Nov 21 18:19 check_ntp_time
        -rwxr-xr-x. 1 nagios nagios 212335 Nov 21 18:19 check_nwstat
        -rwxr-xr-x. 1 nagios nagios 8779 Nov 21 18:19 check_oracle
        -rwxr-xr-x. 1 nagios nagios 160109 Nov 21 18:19 check_overcr
        -rwxr-xr-x. 1 nagios nagios 164211 Nov 21 18:19 check_pgsql
        -rwxr-xr-x. 1 nagios nagios 183658 Nov 21 18:19 check_ping
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_pop -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 186937 Nov 21 18:19 check_procs
        -rwxr-xr-x. 1 nagios nagios 157567 Nov 21 18:19 check_real
        -rwxr-xr-x. 1 nagios nagios 9582 Nov 21 18:19 check_rpc
        -rwxr-xr-x. 1 nagios nagios 1453 Nov 21 18:19 check_sensors
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_simap -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 247834 Nov 21 18:19 check_smtp
        -rwxr-xr-x. 1 nagios nagios 251233 Nov 21 18:19 check_snmp
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_spop -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 155395 Nov 21 18:19 check_ssh
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_ssmtp -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 141073 Nov 21 18:19 check_swap
        -rwxr-xr-x. 1 nagios nagios 230757 Nov 21 18:19 check_tcp
        -rwxr-xr-x. 1 nagios nagios 156545 Nov 21 18:19 check_time
        lrwxrwxrwx. 1 root root 9 Nov 21 18:19 check_udp -> check_tcp
        -rwxr-xr-x. 1 nagios nagios 168557 Nov 21 18:19 check_ups
        -rwxr-xr-x. 1 nagios nagios 137947 Nov 21 18:19 check_uptime
        -rwxr-xr-x. 1 nagios nagios 136097 Nov 21 18:19 check_users
        -rwxr-xr-x. 1 nagios nagios 2937 Nov 21 18:19 check_wave
        -rwxr-xr-x. 1 nagios nagios 131526 Nov 21 18:19 negate
        -rwxr-xr-x. 1 nagios nagios 125772 Nov 21 18:19 urlize
        -rwxr-xr-x. 1 nagios nagios 1895 Nov 21 18:19 utils.pm
        -rwxr-xr-x. 1 nagios nagios 2791 Nov 21 18:19 utils.sh
        [root@localhost libexec]#

        So, How to check plugin directory and permission of user allow or not?
        Please help me to solve it. Thanks you!

        • Ravi Saive says:

          I see the in the plugin directory “/usr/local/nagios/libexec” some of the files are owned by root user. so that means that the nagios user don’t have proper permissions to execute those files, better assign those files to nagios using following command.

          chown -R nagios:nagios /usr/local/nagios/libexec
  23. Asriel Rusdyawan says:

    I think you forgot to create a configuration to windows template so then the host can refer to the template to execute some commands. CMIIW.

Leave a Reply

This work is licensed under a (cc) BY-NC | TecMint uses cookies. By using our services, you comply to use of our cookies. More info: Privacy Policy.
© 2012-2014 All Rights Reserved.