Seite wählen

NETWAYS Blog

Icinga 2 mit InfluxDB 2

Die Überwachung von Infrastruktur und Software ist eine grundlegende Sache in der IT. Beim Monitoring spielt aber nicht nur der Status und die Benachrichtigung der zu überwachenden Objekte eine wesentliche Rolle, sondern auch die Aufbewahrung und die nachträgliche Betrachtung von Performancedaten. Diese lassen sich bei Icinga 2 anhand von Check Plugins ermitteln und mit unterschiedlichen Writern bzw. Features u.a. an InfluxDB weiterleiten.

Nach der Installation von Icinga 2 und influxDB 2 können wir einen Bucket erstellen in dem wir später die Icinga 2 Metriken aufbewahren können.

# influx bucket create -n icinga
ID                  Name      Retention   Shard group duration     Organization ID 
b07cac747d7d6dd7    icinga    infinite    168h0m0s                 74cacb1ac05bfe71

Icinga 2 benötigt einen Token um in diesen Bucket schreiben zu können. Den Token für die Schreibberechtigung können wir wie folgt generieren.

# influx auth create --write-bucket b07cac747d7d6dd7

Damit Icinga 2 mit dem Export der Metriken anfängt, muss das folgende Object konfiguriert werden.

# cat /etc/icinga2/features-available/influxdb2.conf
object Influxdb2Writer "influxdb2" {
  host = "127.0.0.1"
  port = 8086
  organization = "icinga"
  bucket = "icinga"
  auth_token = "TKfmBkRdJ2HfjcVk35nwr0eX0TiYCbEcBe8xDh-_dIafGFpGalTe5HlCAKt6ZlPlJsyw4uH8Mfk4Mt7uI-xqyQ=="
  flush_threshold = 1024
  flush_interval = 10s

Ab diesem Zeitpunkt können wir die Daten im InfluxDB UI auf ansehen. Die dortigen Dashboards kann man z. B. durch Grafana oder InfluxDB zusammenstellen bzw. anzeigen lassen. Um mehr über InfluxDB 2 und Grafana zu erfahren, könnt Ihr die InfluxDB Schulung buchen & besuchen.

Afeef Ghannam
Afeef Ghannam
Systems Engineer

Afeef hat seine Ausbildung Als Fachinformatiker in Richtung Systemintegration im Juli 2020 bei NETWAYS absolviert, seitdem unterstützt er die Kolleg:innen im Operations Team der NETWAYS Professional Services bei der Betriebsunterstützung. Nach der Arbeit macht er gerne Sport, trifft Freunde oder mag es Filme zu schauen.

Stresstest für InfluxDB

Nach einer frischen Installation von InfluxDB, egal ob auf einem dedizierten System oder nicht, frägt man sich vielleicht wie leistungsfähig das Graphing Setup nun wirklich ist oder wie viel es denn eigentlich verträgt?

Diese Fragen lassen sich mit influx-stress beantworten. Das in Golang geschriebene Helferchen ist über GitHub erhältlich und feuert beliebig viele einstellbare Metriken an InfluxDB. Dabei spielt es keine Rolle ob es lokal oder remote von einem anderen System aus aufgerufen wird.

Installation

Nachdem das Repository heruntergeladen wurde, wird das Ganze mit „go build“ kompiliert:

# git clone https://github.com/influxdata/influx-stress.git
# cd influx-stress/cmd/influx-stress/
# go build -o /usr/local/bin/influx-stress

Vorbereitungen

Das Tool unterstützt derzeit nur die Authentifizierung für v1, allerdings kann man auf diese bei Bedarf auch komplett verzichten. Mit InfluxDB OSS 2.x kann dafür die „InfluxDB 1.x compatibility API“ benutzt werden. Außerdem empfiehlt es sich für die Tests ein eigenes Bucket anzulegen um es später in einem Rutsch wieder zu löschen oder um gleich eine passende Retention Policy zu definieren.

# influx bucket create -n stress
# influx bucket list
# influx v1 auth create --username stress --password ****** --write-bucket f596604f968324ff
# influx v1 dbrp create --bucket-id f596604f968324ff --db stress --rp infinite

Let’s go!

Sind die Vorbereitungen gemacht, kann es losgehen. Mit „-f“ läuft die Abgabe der Metriken so schnell wie möglich (fast as possible). Ich würde empfehlen zumindest noch mit „-r“ (runtime) die Laufzeit einzuschränken, andernfalls würde es endlos laufen. Durch Eingabe von „–host“ definiert man den Remotehost (Standard: „http://localhost:8086“).

# /usr/local/bin/influx-stress insert -f -r 1m --user stress --passs ****** --db stress

Eine beispielhafte Serie (für Icinga) könnte so aussehen: (Standard: „ctr,some=tag n=0i“)

# /usr/local/bin/influx-stress insert -r 1m ping4,hostname=agent.example.com,service=ping4,metric=rta crit=0.200000,min=0,unit="seconds",value=0.200000,warn=0.100000 --user stress --passs ****** --db stress

Nach erfolgtem Lauf bekommt man sowohl den Durchsatz (Throughput) als auch die geschriebenen Punkte (Points Written) angezeigt. Außerdem werden die Standardeinstellungen für die nicht definierten Parameter ausgegeben, die sich natürlich aber auch noch abändern lassen.

Using batch size of 10000 line(s)
Spreading writes across 100000 series
Output is unthrottled
Using 20 concurrent writer(s)
Running until ~18446744073709551615 points sent or until ~1m0s has elapsed
Write Throughput: 212335
Points Written: 13100000

Wer mehr zum Thema InfluxDB erfahren möchte, dem kann ich neben unseren üblichen Dienstleistungen auch unser InfluxDB & Grafana Training wärmstens ans Herz legen.

Markus Waldmüller
Markus Waldmüller
Head of Strategic Projects

Markus war bereits mehrere Jahre als Sysadmin in Neumarkt i.d.OPf. und Regensburg tätig. Nach Technikerschule und Selbständigkeit ist er nun Anfang 2013 bei NETWAYS als Senior Manager Services gelandet. Seit September 2023 kümmert er sich bei der NETWAYS Gruppe um strategische Projekte. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.