Page 1 of 2

check_nrpe - monitor memory usage on windows server

Posted: Thu Jan 13, 2011 7:02 am
by soliberus
Hello everybody

I'm stuck. I'm running Nagios on Fedora and I've installed (and configured) NSClient++ on my Windows 2003 server.

I would like to monitor the memory usage of this server.

This is what I found in the provided documentation:
Sample Command:
CheckMEM MaxWarn=80% MaxCrit=90% ShowAll type=physical
OK: OK: physical: 758M (795205632B)

Nagios Configuration:
define command {
command_name <<CheckMEM>>
command_line check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% }
<<CheckMEM>> 80!90

From Commandline (with NRPE):
check_nrpe -H IP -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical
Now when I run the "check_nrpe -H IP -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical" command from my Fedora server's command line it works fine.

However, the "define command" bits don't work. Nagios isn't happy with the code provided above.

Has anyone else been successful in getting this working?

Many thanks

Re: check_nrpe - monitor memory usage on windows server

Posted: Thu Jan 13, 2011 10:09 am
by mguthrie
Can you show us what the command definition and also the service definition looks like? Usually in cases like this the problem lies in how the arguments are quoted and/or broken up.

Re: check_nrpe - monitor memory usage on windows server

Posted: Thu Jan 13, 2011 10:49 am
by soliberus
That is part of my problem. According to the documentation included with the NSClient++ software the command definition should be this:

Code: Select all

define command {
command_name <<CheckMEM>>
command_line check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% }
<<CheckMEM>> 80!90
That doesn't look right to me and the nagios service won't start when I put it in commands.cfg

I don't know how to construct the service definition with check_nrpe, because my other service definitions are using check_nt.

Re: check_nrpe - monitor memory usage on windows server

Posted: Thu Jan 13, 2011 1:03 pm
by mguthrie
The format for your command definition is incorrect. Here's are some examples:

Command Defintion Examples:
check_nt

Code: Select all

$USER1$/check_nt -H $HOSTADDRESS$ -p $USER7$ -s $USER8$ -v $ARG1$ $ARG2$
check_nrpe

Code: Select all

$USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
Service Definition using NRPE:

Code: Select all

define service {
	host_name			<hostname>
	service_description		/ Disk Usage
	use				xiwizard_nrpe_service
	check_command			check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
Take a look at the Core Documentation for more information:
http://nagios.sourceforge.net/docs/3_0/ ... ndows.html

Re: check_nrpe - monitor memory usage on windows server

Posted: Fri Jan 14, 2011 7:11 am
by soliberus
Okay, I've narrowed it down a bit. It seems that no arguments are passed to the windows host.

I've started NSClient++ in test mode on the Windows server.

When I execute the check_nrpe command from the command line it succeeds:

Code: Select all

/usr/local/nagios/libexec/check_nrpe -H 10.100.90.53 -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical

WARNING: physical memory: Total: 0.999G - Used: 876M (85%) - Free: 147M (15%) > warning|'physical memory %'=85%;80;90; 'physical memory'=876.39M;818.75;921.10;0;1023.44;
...and it reports the following on the windows server:
d NSClient++.cpp(1106) Injecting: CheckMEM: MaxWarn=80%, MaxCrit=90%, ShowAll,
type=physical
As you can see, check_nrpe passed the arguments to Client++

Now, when I configure my Nagios server like this...

commands.cfg

Code: Select all

define command{
        command_name    checkMem
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c checkMem -a MaxWarn=80% MaxCrit=90% 
                                 ShowAll type=physical
        }
windows-host.cfg

Code: Select all

define service{
       use                          generic-service
       host_name               svr-busobj01
       service_description   Memory Usage
       check_command      check_nrpe!checkMem
       }
... I get this on the Windows host:
d NSClient++.cpp(1106) Injecting: checkMem:
d NSClient++.cpp(1142) Injected Result: WARNING 'ERROR: Missing argument exception.'
So it seems that my Nagios configuration is not passing any arguments.

Re: check_nrpe - monitor memory usage on windows server

Posted: Fri Jan 14, 2011 11:42 am
by mguthrie
You have a typo in your check definition.

Working command:
/usr/local/nagios/libexec/check_nrpe -H 10.100.90.53 -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical
Your command definition:
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c checkMem -a MaxWarn=80% MaxCrit=90% ShowAll type=physical

Re: check_nrpe - monitor memory usage on windows server

Posted: Mon Jan 17, 2011 10:09 am
by soliberus
I have changed my command line to "CheckMEM", but the problem remains the same. No arguments are passed to the Client++ windows client via my service/command definitions.

Re: check_nrpe - monitor memory usage on windows server

Posted: Mon Jan 17, 2011 11:16 am
by mguthrie
In that case I'd try testing putting the arguments in quotes, try these and see if either works.

Code: Select all

/usr/local/nagios/libexec/check_nrpe -H 10.100.90.53 -p 5666 -c CheckMEM -a 'MaxWarn=80% MaxCrit=90% ShowAll type=physical'

/usr/local/nagios/libexec/check_nrpe -H 10.100.90.53 -p 5666 -c 'CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical'

/usr/local/nagios/libexec/check_nrpe -H 10.100.90.53 -p 5666 -c CheckMEM '-a MaxWarn=80% MaxCrit=90% ShowAll type=physical'

Re: check_nrpe - monitor memory usage on windows server

Posted: Tue Jan 18, 2011 7:49 am
by soliberus
I've tried them all, but the none of them worked.

I cannot spend more time on this though, so I've decided to stick with check_nt. It may be inferior to check_nrpe, but at least it works.

Thanks for your help.

Re: check_nrpe - monitor memory usage on windows server

Posted: Fri Apr 08, 2011 2:53 am
by ethantester123
After going through n no of steps and searching many sites i finally got my nrpe CheckMEM working. Thanks to this post i got to the final step.

Here are the steps that i had to follow - right from the beginning:
1. Configure the NSC.ini host file correctly on windows host machine with following parameters:
a. Enable module NRPEListener.dll
b. Enable CheckExternalScripts.dll
c. Enable [NRPE] port no i.e port=5666
d. Enable [NRPE] arguments i.e allow_arguments=3 (can be any number you want)

2. Execute the CheckMEM command from command line as follows
/usr/local/nagios/libexex/check_nrpe -H 12.345.567.890 -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll=long type=physical

3.Create the command and service definitions in nagios cfg files as follows:
define command{
command_name check_nrpe_mem
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll=long type=page
}

define service{
use generic-service
host_name myhost
service_description Memory Usage
check_command check_nrpe_mem
}

4. Saved and restarted nagios.. And it worked exactly as i want.

I hope this info helps any one facing such problem

Note: I am using a Fedora virtual machine for my nagios monitoring server.