Table of Contents

Introduction

The php client contains a few checks. You can extend the functionality by writing custom plugins.

Conventions

  • custom checks are in the “plugins/checks/” subdirectory
  • naming convention: they must be lowercase - [name of your check] + “.php”
  • it must be a class that extends appmonitorcheck
  • the class name must be “check” + [name of your check]
  • it needs a run method that gets an array as argument

The built in functions and custom checks are listed with listChecks method:

require_once('classes/appmonitor-client.class.php');
$oMonitor = new appmonitor();
print_r($oMonitor->listChecks());

Example

A good starting point is the file [client]/plugins/hello.php

  • To access the checkHello.php you need to use “Hello” in the value check -> function.
  • A plugin gets the array check -> params as argument. The following snippet will use an array with a single key “message”

In the check script:

require_once('classes/appmonitor-client.class.php');
$oMonitor = new appmonitor();
// (...)
$oMonitor->addCheck(
    [
        "name" => "check plugin",
        "description" => "test an external plugin plugins/checkHello.php",
        "check" => [
            "function" => "Hello",
            "params" => [
                "message" => "Here I am",
            ],
        ],
    ]
);

In the plugins/checkHello.php the class name ist the same like the filename (without “.php”):

It needs a method run() that must be public.

class checkHello extends appmonitorcheck{
    // (...)
    public function run($aParams){
        // (...)
    }
}

Inside the class I suggest to use to verify your needed keys with _checkArrayKeys()

$this->_checkArrayKeys($aParams, "message");

After making the magic things things of your custom check you need to return a result set as an array.

The class appmonitorcheck that calls your plugin will put your response to _setReturn():

require_once($sPluginFile);
$oPlogin = new $sCheck;
$this->_setReturn($oPlogin->run($aParams));

The checkHello has a documented section. It returns the minimal variant with return code and a message - but no counter.

// see method appmonitorcheck->_setReturn()
// 
// {integer} you should use a RESULT_XYZ constant:
//              RESULT_OK|RESULT_UNKNOWN|RESULT_WARNING|RESULT_ERROR
// {string}  output text 
// {array}   optional: counter data
//              type   => {string} "counter"
//              count  => {float}  value
//              visual => {string} one of bar|line|simple (+params)
//           
return [
    RESULT_OK, 
    'Hello world! My message is: ' .$aParams['message']
];

This returns an OK with the message “Hello world! My message is: Here I am”.