How can I manually run a nagios check from the command line?

116,238

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.

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

Share:
116,238

Related videos on Youtube

cwd
Author by

cwd

Updated on September 18, 2022

Comments

  • cwd
    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
    Greg Petersen over 12 years
    And keep in mind that always do it with nagios user su - nagios -s /bin/bash.
  • cwd
    cwd over 12 years
    nice. and the - loads the environmental variables for that user?
  • cwd
    cwd over 12 years
    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! :)
  • David W
    David W over 12 years
    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.
  • cwd
    cwd about 12 years
    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.
  • sbditto85
    sbditto85 over 11 years
    I struggled to get this to work, not sure what i was doing wrong (noob) but the debug_level trick worked for me :)
  • dmourati
    dmourati over 9 years
    The help option should be --help. nagios-plugins.org/doc/guidelines.html
  • dmourati
    dmourati over 9 years
    Try "watch" in place of the while loop. linux.about.com/library/cmd/blcmdl1_watch.htm
  • jwg
    jwg over 8 years
    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)