Seite wählen

Neues zum go-check

von | Feb 16, 2023 | NETWAYS, Golang

Lang ist es her, dass ein Blogpost über das hauseigene NETWAYS go-check geschrieben wurde. Seitdem hat sich das go-check immer weiterentwickelt und wurde mit vielen verschiedenen Funktionen erweitert, sodass die Pluginentwicklung noch einfacher von der Hand geht.

Um einen kurzen Umriss zu geben, bei dem go-check handelt es sich um GO Package, mit dem es möglich ist, schnell und einfach, Icinga Plugins zu entwickeln.

Ein Beispiel dafür wäre das Evaluieren von Thresholds und anschließendem Anhängen von Performance data im richtigen Format:

package main

import (
	"github.com/NETWAYS/go-check"
	"github.com/NETWAYS/go-check/perfdata"
)

func main() {
	config := check.NewConfig()
	config.Name = "check_new"
	config.Readme = `example Plugin Readme`
	config.Version = "1.0.0"

	return_code := check.Unknown

	plugin_output := ""

	crit_thresh := config.FlagSet.StringP("crit-example", "c", "20", "Critical threshold")

	warn_thresh := config.FlagSet.StringP("warn-example", "w", "10", "Warning threshold")

	example_val := config.FlagSet.Float64("example-val", 0.0, "Example value")

	config.ParseArguments()

	crit, err := check.ParseThreshold(*crit_thresh)
	if err != nil {
		check.ExitError(err)
	}

	warn, err := check.ParseThreshold(*warn_thresh)
	if err != nil {
		check.ExitError(err)
	}

	if crit.DoesViolate(*example_val) {
		return_code = check.Critical
		plugin_output = "Value is critical!"
	} else if warn.DoesViolate(*example_val) {
		return_code = check.Warning
		plugin_output = "Value is warning!"
	} else {
		return_code = check.OK
		plugin_output = "Everything is fine"
	}

	p := perfdata.PerfdataList{{
		Label: "example_label",
		Value: *example_val,
		Warn:  warn,
		Crit:  crit,
		Uom:   "Mb",
	}}

	example_perf := perfdata.Perfdata{
		Label: "another_perfdata",
		Value: 1.0,
		Warn:  &check.Threshold{Upper: 50.0},
		Crit:  &check.Threshold{Upper: 100.0},
	}

	p.Add(&example_perf)

	check.ExitRaw(return_code, plugin_output, "|", p.String())
}

Nach dem Kompilieren des Programms können beispielhaft Parameter mitgegeben werden:

go build -o check_test main.go

./check_test -c 20 -w 9 --example-val 10
WARNING - Value is warning! | example_label=10Mb;9;20 another_perfdata=1;50;100

Darüber hinaus gibt es folgende weitere Funktionen:

  • Konvertierung von IEC zu SI Einheit
  • Performance data in Human-readable Format
  • Http-Mock, welcher http-requests und results “dokumentiert” und in XML speichert
  • Evaluierung des “schlechtesten” Ergebnisses (Value) in einem Array

Somit bietet go-check ein schnelles und komfortables Package für die Entwicklung eines Icinga 2 Check Plugins. Für weitere Releases und Aktualisierungen, einfach bei dem offiziellen NETWAYS Organisation vorbei schauen.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema NETWAYS | Golang

NETWAYS stellt sich vor – Kleon Rockenbach

Name: Kleon Rockenbach Alter: 29 Position bei NETWAYS: Systems Engineer Bei NETWAYS seit: April 2024       Was genau gehört zu Deinem Aufgabenbereich bei NETWAYS? Als Teil des MyEngineer-Teams bin ich aktuell für den First-Level-Support unserer Kunden...

Monthly Snap Juni 2024

Hallo zusammen! Im Juni stand dieses Jahr nicht nur die stackconf im Mittelpunkt, denn Anfang des Monats fand auch der Icinga Summit in Berlin statt. Ein hervorragender Monat also! Aber, wie immer, hatten wir in unserem Blog eine gute Themen- Mischung für Euch!  ...