Skip to content

Latest commit

 

History

History
64 lines (47 loc) · 2.05 KB

README.md

File metadata and controls

64 lines (47 loc) · 2.05 KB

check_multiple

Nagios plugin used to execute multiple commands in parallel.

With the --mode parameter, it can be configured to return either the best overall result, or the worst. If you choose the worst overall result (the default), then you will be notified when one of the commands fails. If you choose the best overall result, then you will be notified only when all of them fail.

The output from check_multiple indicates how many OK, WARNING, and CRITICAL results the individual commands produced. Afterwards, the output from those individual commands, concatenated onto one line per command, is emitted.

An example Nagios command that will ping a host and check that HTTP/SSH are running on it, and return the best overall result (i.e. the host is up if any service responds):

define command {
  command_name check-host-alive-multiple

  command_line $USER1$/check_multiple --mode best "$USER1$/check_ping -H $HOSTADDRESS$ -w 1000.0,80% -c 1000.0,100% -p 5" "$USER1$/check_http -H $HOSTADDRESS$" "USER1$/check_ssh -H $HOSTADDRESS$"
}

Command-line usage:

usage: check_multiple [-h] [--mode {worst,best}] command [command ...]

Run multiple Nagios checks and combine the results.

positional arguments:
  command              check to run, enclosed in quotes

optional arguments:
  -h, --help           show this help message and exit
  --mode {worst,best}  which individual check result should be the overall
                       result; either the "worst" one or the "best" one
                       (default: worst)

To run the script from a development checkout, you'll need to tell python where it can find the "check_multiple" package:

$ PYTHONPATH="./lib" bin/check_multiple ...

The check_multiple package comes with a test suite that should always pass:

$ python -m unittest lib/check_multiple/check_multiple.py
......................................................
----------------------------------------------------------------------
Ran 54 tests in 6.207s

OK

Requirements:

  • Python 3.5 or greater (tested up to Python 3.9.11).