27

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.

5 Answers 5

32

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.

4
  • awesome. 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! :)
    – cwd
    Dec 12, 2011 at 2:37
  • 2
    I will also menton for new users that using tail -f will allow you to continue seeing updates to the file in real time, and control+c will cancel this.
    – cwd
    Apr 21, 2012 at 1:19
  • 3
    The 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)
    – jwg
    Nov 24, 2015 at 10:07
  • 1
    Also note that your debug file will grow quickly and then rotate itself. To allow it to grow bigger before rotating, add more zeroes, for example max_debug_file_size=100000000 Jan 17, 2023 at 18:44
19

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!

5
  • 1
    +1 ...and if that seems like too much trouble you could always look at the Nagios config files to see what command and parameters need to be run. Even the location of the plugins directory is in there. Dec 12, 2011 at 1:20
  • 7
    And keep in mind that always do it with nagios user su - nagios -s /bin/bash.
    – quanta
    Dec 12, 2011 at 1:38
  • nice. and the - loads the environmental variables for that user?
    – cwd
    Dec 12, 2011 at 2:35
  • Yup, 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.
    – David W
    Dec 12, 2011 at 22:49
  • The help option should be --help. nagios-plugins.org/doc/guidelines.html
    – dmourati
    Sep 2, 2014 at 23:39
5

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.

1
3

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.

http://www.waggy.at/nagios/capture_plugin.htm

1
  • 1
    I struggled to get this to work, not sure what i was doing wrong (noob) but the debug_level trick worked for me :)
    – sbditto85
    Nov 13, 2012 at 17:41
3

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .