Using Nagios plugins for configuration and system testing

Using Nagios plugins can be vital in performing specific system tests and configuration. In this tip, you'll learn about using default and custom plugins in Nagios.

This is the third installation in a series of tips on using the open source network monitoring tool Nagios. Part one of the series covers Nagios installation and configuration, while part two detailed how to use Nagios for remote server monitoring. In this part of our series, you’ll learn about using Nagios plugins.

Nagios plugins play a key role in Nagios configuration and help perform specific tests, such as checking available disk space. For a Nagios system to perform certain tasks, you can use plugins from the service configuration files in /etc/nagios/objects.

To better understand how to use Nagios plugins, it’s best to look at a configuration file that uses one, such as localhost.cfg. By default, this file is available with all Nagios installations, and allows you to easily monitor the availability of services. The example below (Listing 1) shows how the file is used to monitor the httpd service:

define service{

     use                 local-service  ; Name of service template to use

     host_name           localhost

     service_description HTTP

     check_command       check_http

     notifications_enabled  0


Listing 1: Example of a service definition


In this service definition, five lines are used to define what has to be done.  First, there is the inclusion of a template -- in this case, local-service. The local-service template is just another service file that contains several generic settings. Next, the definition describes which host should be monitored -- the localhost. After that, there is a short description of the specific service you want to monitor (HTTP), and on the fourth line, you’ll find the check_command. This command refers to a plugin, and in this case, it is check_http.

As previously mentioned, every Nagios installation comes with default plugins that perform specific tests. Aside from the plugins that are installed by default, you can add custom plugins to Nagios. Each is a command that is written to work with specific exit codes that indicate the status of the monitored object. Based on the exit code, Nagios knows exactly what is happening. When using a specific plugin, make sure to use the right options to define when a specific exit code should be generated. The following exit codes are available:

Exit code





Working correctly



Working, but needs attention



Not working correctly



Status of the host or service could not be determined

When working with plugins, using plugin command-line options is essential. Normally, every plugin uses common options: -t allows you to specify a timeout, -w allows you to specify limits before a warning status is reached and -c allows you to specify when the critical state is reached. By using these options in the service definition file, you have control over tuning the plugin. You can request a list of options that are supported by the plugin by running it with the --help command (Listing 2).

ittoqqortoormiit:/usr/lib/nagios/plugins # ./check_ping --help

check_ping v1991 (nagios-plugins 1.4.13)

Copyright (c) 1999 Ethan Galstad <[email protected]>

Copyright (c) 2000-2007 Nagios Plugin Development Team

            <[email protected]>

Listing 2: Use the --help option with a plugin to find out which options are supported by the plugin.


Use ping to check connection statistics for a remote host (Listing 3):


Usage:check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
[-p packets] [-t timeout] [-4|-6]


-h, --help   
   Print detailed help screen
-V, --version
    Print version information
-4, --use-ipv4
    Use IPv4 connection
-6, --use-ipv6
    Use IPv6 connection 
-H, --hostname=HOST
    host to ping
-w, --warning=THRESHOLD
    warning threshold pair
-c, --critical=THRESHOLD
    critical threshold pair
-p, --packets=INTEGER
    number of ICMP ECHO packets to send (Default: 5)

Listing 3: This list of options is the result of the –help option with the check_ping command. This is how the command gives its output. Use -h as the short option and --help as the long option.


If using an option from the service definition is not appropriate for what you want to do, you can define your own commands based on the use of plugins with specific parameters. Some commands are available by default in the commands.cfg file, but nothing prevents you from adding your own. In the following sample code (Listing 4), you can see how the check-host-alive command and the check_ping plugin are used with specific parameters to find out what the current status of a host is.

define command{

     command_name  check-host-alive

     command_line  $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5


Listing 4: By using plugins, you can build your own Nagios commands.


As you can see, Nagios uses a highly modular approach to determine what should be monitored. Plugins are key in specifying how to monitor an environment, and defining your own Nagios commands in the commands.cfg file is a convenient way to use the plugins. Make sure to look at the various available Nagios plugins, run them from /usr/lib/nagios with the --help option, and learn how they should be used. Understanding the available options will help you define your own commands and will help use them correctly in service definitions when customizing your Nagios environment. Now that you have learned about using Nagios plugins for configuration and testing, keep an eye out for a future tip on sending alerts with Nagios.

Dig Deeper on Systems automation and orchestration

Software Quality
App Architecture
Cloud Computing
Data Center