How can I manually run a nagios check from the command line?
Solution 1
Sometimes I find it tricky figuring out exactly what a plugin is doing. To figure this out I set nagios into debug mode with the configuration like this. debug_level=2048
With nagios in debug mode I simply tail the debug_log
file debug_file=/var/log/nagios3/nagios.debug
. Force a check and you will see exactly how the command is being run. I wouldn't leave this setting on normally though, it is very verbose and fills your log file at a rapid rate.
Solution 2
It's pretty simple. Just cd (or not) into the plugins directory (this directory location varies, depending on how you've installed it, but check /usr/local/nagios, or /usr/lib/nagios).
Find the plugin you want to run (if you're not sure, compare what you see in your plugins directory on your Linux box with the plugins located here: http://exchange.nagios.org/directory/Plugins, or try running "./plugin-name -h" to get the help info about the plugin).
The method for using any of these "plugins" from the command line is the same as any other Linux script: Just run "./plugin-name" with the appropriate flags you want to check, and voila!
Solution 3
I take a slightly more brute-force direction than @Zoredache, I login to the nagios server and do "while true; do ps awwlx | grep NAGIOS_CHECK_NAME; done", while I force a re-check of the service, where NAGIOS_CHECK_NAME is either part of the check name or the IP of the server I am looking for. Usually within a few seconds the full check command pops up and I then kill the while loop and run the check command.
Yeah, it's totally brute-force, but <shrug> it works for me.
Solution 4
Go to your plugin directory - in my example it is
/usr/lib64/nagios/plugins/
Type you plugin name - in my example it is
check_tcp
now run the full command - (plugin name) -H (hostname) -p (port number)
/usr/lib64/nagios/plugins/check_tcp -H myservername -p 8080
output
TCP OK - 0.004 second response time on port 8080|time=0.004146s;;;0.000000;10.000000
However in this example port number is optional
another example -
in your config file which is look something like below (myserver.cfg) and you want to run check_cpu from command line
define service{
use generic-service
host_name myserver
servicegroups windows
service_description CPU
contact_groups sysadmin_email_only
notification_options w,c,r
check_command check_nrpe!check_cpu
}
to check instantly (without GUI green or red)
Try this - (plugin full path) - H (servername) -c (checkname)
/usr/lib64/nagios/plugins/check_nrpe -H spc7atc01 -c check_cpu
output -
OK CPU Load ok.|'5'=4;80;90; '10'=3;80;90; '15'=3;80;90;
Thats it
Solution 5
You might also want to give the 'capture' plugin a try. It essentially does the same thing as a debug level of 2048, but can be used on a per-plugin basis. This yields less output to dig through.
Related videos on Youtube
cwd
Updated on September 18, 2022Comments
-
cwd over 1 year
When defining and testing new services in nagios I have been restarting nagios, then clicking the service, and rescheduling a check for as soon as possible, then waiting until the check happens.
Is there a more efficient way to do this? I'd like to use the command line to run that particular check and get the output.
-
Greg Petersen over 12 yearsAnd keep in mind that always do it with
nagios
usersu - nagios -s /bin/bash
. -
cwd over 12 yearsnice. and the
-
loads the environmental variables for that user? -
cwd over 12 yearsawesome. this is more along the lines of what i meant. just because i had already looked in the commands.cfg file to figure out which commands were running, but i wanted to know what flags were being set. thanks! :)
-
David W over 12 yearsYup, just like any other linux flag, the "-" with whatever flags you use will load the flag. (If I were running df -h on the linux CLI, I'm using the "h" flag - in the case of the df command, the h stands for "human readable".) So if you wanted to run the check_http check from the CLI, you would run ./check_http -I, where the I flag stands for the IP Address (nagiosplugins.org/man/check_http). nagiosplugins.org/man might be helpful, as well as the Plugins directory I linked to earlier.
-
cwd about 12 yearsI will also menton for new users that using
tail -f
will allow you to continue seeing updates to the file in real time, andcontrol+c
will cancel this. -
sbditto85 over 11 yearsI struggled to get this to work, not sure what i was doing wrong (noob) but the debug_level trick worked for me :)
-
dmourati over 9 yearsThe help option should be --help. nagios-plugins.org/doc/guidelines.html
-
dmourati over 9 yearsTry "watch" in place of the while loop. linux.about.com/library/cmd/blcmdl1_watch.htm
-
jwg over 8 yearsThe debug_levels are binary - 2048 only turns on messages from macros. To turn on everything you want to set debug_level=4095. (1 + 2 + ... + 2048)