Write nagios plugins with PHP


Nagios Plugins to the monitoring of servers and functionality, you can write in any available language. The only rule, You must adhere to that is, that the Return code the script and the response text (also includes the Performance data) must be built according to a certain scheme.

You can use the class NagiosPlugin as, to write plug-ins:

abstract class NagiosPlugin {

    /**
     * @var boolean
     */
    protected $verbose = false;

    /**
     * setVerboseModeFromArgv
     * @see https://nagios-plugins.org/doc/guidelines.html#AEN41
     *
     * @param $argv
     * @return void
     */
    public function setVerboseModeFromArgv($argv) {
        if(in_array('-v', $argv)){
            $this->verbose = true;
        }
    }

    /**
     * addVerboseMessage
     *
     * @param $message
     * @return void
     */
    protected function displayVerboseMessage($message){
        if($this->verbose){
            echo $message.PHP_EOL;
        }
    }

    /**
     * endWithStatusOk
     * @see https://nagios-plugins.org/doc/guidelines.html#AEN200
     *
     * @param string $message
     * @param string $performanceData has format "nameOfData=value"
     * @return void
     */
    protected function endWithStatusOk($message, $performanceData){
        print "OK - $message".$this->addPerformaceData($performanceData);
        exit(0);
    }

    /**
     * endWithStatusWarning
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusWarning($message, $performanceData){
        print "WARNING - $message".$this->addPerformaceData($performanceData);
        exit(1);
    }

    /**
     * endWithStatusCritical
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusCritical($message, $performanceData){
        print "CRITICAL - $message".$this->addPerformaceData($performanceData);
        exit(2);
    }

    /**
     * endWithStatusUnknown
     *
     * @param string $message
     * @param string $performanceData
     * @return void
     */
    protected function endWithStatusUnknown($message, $performanceData){
        print "UNKNOWN - $message".$this->addPerformaceData($performanceData);
        exit(3);
    }

    /**
     * addPerformaceData
     *
     * @param string $performanceData
     * @return string
     */
    private function addPerformaceData($performanceData){
        $result = '';
        if(!empty($performanceData)){
            $result = ' | '.$performanceData;
        }
        return $result;
    }
}

 

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>