Select Page

Neues zum go-check

by | 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 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic NETWAYS | Golang

Monthly Snap Mai 2024

Hallo zusammen! Der Mai ist unglaublich schnell verflogen mit Star Wars Day, DevOpsDays und den vielen Feiertagen. Aber rückblickend war es ein schöner Frühlingsmonat. Unser Blog war im Mai stark auf die Konferenzen fokussiert, denn da warten ja noch einige Highlights...

Grab One of the Last Tickets to stackconf 2024!

The clock is ticking, and if you haven't secured your spot at stackconf 2024 yet, now is the time! This premier conference, held in Berlin on June 18-19, is a must-attend event for anyone involved in IT infrastructure, cloud native solutions, and DevOps. With a...

Praktikumswoche 2024 | Das Ticket zu Deiner IT-Zukunft

Wir von NETWAYS sind voller Vorfreude darauf, junge Talente während der Praktikumswoche Mittelfranken zu begrüßen und ihnen die faszinierende Welt der Informationstechnologie näherzubringen.   Das ist die Praktikumswoche Die Praktikumswoche ist eine fantastische...

Azubi-Projektwoche 2024

Hallo zusammen, wie jedes Jahr fand auch dieses Jahr unsere spannende Azubi-Projektwoche bei NETWAYS statt. Für alle, die noch nicht wissen, worum es geht: In dieser Woche kommen alle NETWAYS Azubis zusammen, um gemeinsam ein Projekt zu realisieren. Besonders...