Writing a Nagios plugin with PHP

For those of you who don’t know, Nagios is a simple and powerful monitioring tool. Nagios can call external commands at set intervals to check for errors and then escalate or alert on the errors. Here is a quick example of writing a PHP plugin for Nagios.

Create your PHP file named “check_php_test.php” with the following contents

\<?php
	fwrite(STDOUT, 'This check passed');
	exit(0);

This will output the “This check passed” string to Nagio with a status code of zero. Of course you will want to customize this to determine your OK and Error states. The available status codes are

0  = OK	or UP
1 = WARNING UP or DOWN/UNREACHABLE
2 = CRITICAL or DOWN/UNREACHABLE
3 = UNKNOWN or DOWN/UNREACHABLE

Now edit your commands.cfg and add a new command for the PHP plugin we will create

define command{
    command_name    check-php-test
    command_line    php /your/path/check_php_test.php
}

Add a service to execute this command in your host config

define service{
    use                             local-service ; Name of service template to use
    host_name                       localhost
    service_description             PHP_ERROR
    check_command                   check-php-test
    check_interval                  5 ; check every 5 minutes (if you havent changed your time units)
    register                        1
    active_checks_enabled           1
    retry_interval                  1 ; retry every minute when in an error state
    max_check_attempts              4 ; test 4 times before deciding the hard state
    contact_groups                  admins ; contact the admin with errors
}

Restart Nagios and monitor your shit.

Get In Touch.

If you'd like to get in touch, you can reach me at ben@benedmunds.com.


Find me on ...