Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 2.25 KB

README.md

File metadata and controls

47 lines (37 loc) · 2.25 KB

go-monitoringplugin

Go Report Card GitHub license GoDoc doc

Description

Golang package for writing monitoring check plugins for nagios, icinga2, zabbix, checkmk, etc. The package complies with the Monitoring Plugins Development Guidelines.

Example / Usage

package main

import (
	monitoringplugin "github.com/inexio/go-monitoringplugin"
)

func main() {
	//Creating response with a default ok message that will be displayed when the checks exits with status ok
	response := monitoringplugin.NewResponse("everything checked!")

	//Set output delimiter (default is \n)
	//response.SetOutputDelimiter(" / ")

	//updating check plugin status and adding message to the ouput (status only changes if the new status is worse than the current one)
	response.UpdateStatus(monitoringplugin.OK, "something is ok!") //check status stays ok
	response.UpdateStatus(monitoringplugin.CRITICAL, "something else is critical!") //check status updates to critical
	response.UpdateStatus(monitoringplugin.WARNING, "something else is warning!") //check status stays critical, but message will be added to the output


	//adding performance data
	err := response.AddPerformanceDataPoint(monitoringplugin.NewPerformanceDataPoint("response_time", 10, "s").SetWarn(10).SetCrit(20).SetMin(0))
	if err != nil {
		//error handling
	}
	err = response.AddPerformanceDataPoint(monitoringplugin.NewPerformanceDataPoint("memory_usage", 50, "%").SetWarn(80).SetCrit(90).SetMin(0).SetMax(100))
	if err != nil {
		//error handling
	}

	response.OutputAndExit()
	/* exits program with exit code 2 and outputs:
	CRITICAL: something is ok!
	something else is critical!
	something else is warning! | 'response_time'=10s;10;20;0; 'memory_usage'=50%;80;90;0;100
	*/
}