Checkmk
to checkmk.com

1. Einleitung

Metriken sind die mess- und berechenbare Werte zu Hosts und Services und werden von Checkmk intern in den sogenannten Round-Robin-Datenbanken (RRDs) gespeichert. Diese Metriken werden durch das eingebaute Graphingsystem aufbereitet und in der Checkmk-Weboberfläche an vielen Stellen visualisiert, zum Beispiel als Perf-O-Meter in der Liste der Services oder als Graphen, die Sie sich aus der Service-Liste mit dem Symbol zur Anzeige von Graphen. Graphsymbol einblenden lassen können. Die Oberfläche für die Visualisierung der Metriken basiert auf HTML5 und ist in den Enterprise Editions und der Raw Edition identisch. Im Artikel zum Graphing erfahren Sie darüber alle Details.

CEE Parallel zum in Checkmk eingebauten Graphing können Sie zusätzlich auch externe Metrikdatenbanken anbinden und die Metriken an InfluxDB oder Graphite senden. Da die Weiterleitung vom Checkmk Micro Core (CMC) durchgeführt wird, ist diese Funktion nur in den CEE Checkmk Enterprise Editions verfügbar.

In diesem Artikel erfahren Sie, wie Sie in Checkmk die Weiterleitung der Metriken zur InfluxDB und zu Graphite einrichten.

2. Metriken an InfluxDB senden

InfluxDB-Logo.

InfluxDB ist ein Open Source Datenbankmanagementsystem (DBMS) für Zeitreihen (time series) — und in diesem Segment zurzeit das populärste. InfluxDB bietet beginnend mit ihrer V2.0 eine neue, einheitliche API — die InfluxDB v2 API — mit der unter anderem Metrikdaten in die Datenbank geschrieben werden können. Checkmk nutzt die InfluxDB v2 API und bietet Ihnen die Möglichkeit, die Metriken aus Checkmk nicht nur an die InfluxDB zu senden, sondern auch passend in die bestehende Struktur der InfluxDB abzulegen. Durch die Nutzung der API wird einerseits die Konfiguration für das Versenden der Metrikdaten vereinfacht und andererseits ist Checkmk vorbereitet für zukünftige Erweiterungen.

Wichtig: Die in diesem Kapitel beschriebene Konfiguration gilt nur für die Anbindung einer InfluxDB V2.0 (oder neuer), da erst ab dieser Version die InfluxDB v2 API verfügbar ist. Falls Sie eine InfluxDB <= V1.8 einsetzen, dann richten Sie diese stattdessen so wie im Kapitel zur Graphite-Anbindung beschrieben ein, da InfluxDB bis zur V1.8 das Carbon-Protokoll von Graphite unterstützt.

2.1. Informationen sammeln

Bevor Sie mit der Einrichtung in Checkmk loslegen, sollten Sie sich die folgenden Informationen besorgen über das InfluxDB-Zielsystem, das Sie mit Checkmk verbinden möchten:

ParameterBedeutung

Host-Name

Name (oder IP-Adresse) des InfluxDB-Servers. Die Eingabe des DNS-Namens ist vor allem dann wichtig, wenn die Verbindung über HTTPS verschlüsselt wird, da Zertifikate fast nie für IP-Adressen ausgestellt werden.

Port-Nummer

Nummer des TCP Ports, über den der InfluxDB-Server erreichbar ist. Der Standard-Port ist 8086. Beim Start mit influxd kann mit der Option --http-bind-address auch ein anderer Port angegeben werden.

Protokoll

HTTP für unverschlüsselte Verbindungen oder HTTPS, um die Verbindung abzusichern.

Organisation

Bei InfluxDB ist die Organisation (organization) der Arbeitsbereich für mehrere Benutzer. Die initiale Organisation wird bei der InfluxDB-Einrichtung abgefragt. Weitere Organisationen können manuell über die InfluxDB-GUI angelegt werden.

Behälter (bucket)

InfluxDB speichert die Zeitreihendaten in Behältern, sogenannten buckets. Für jeden Behälter wird insbesondere ein Aufbewahrungszeitraum (retention period) festgelegt. InfluxDB löscht automatisch alle Datenpunkte, die älter sind als dieser Zeitraum.
Ein Behälter gehört stets zu einer Organisation. Der initiale Behälter wird zusammen mit der Organisation bei der InfluxDB-Einrichtung festgelegt. Weitere Behälter können manuell erstellt werden.

Token

Die Kommunikation zwischen Checkmk und InfluxDB erfolgt über die InfluxDB v2 API. InfluxDB verwendet API-Tokens zur Autorisierung von Anfragen via API. Ein API-Token gehört zu einem bestimmten Benutzer und identifiziert die InfluxDB-Berechtigungen innerhalb der Organisation des Benutzers. Tokens werden über die InfluxDB-GUI angelegt, entweder mit vollem Lese- und Schreibzugriff auf alle Ressourcen in einer Organisation (All Access Token) oder mit ausgewählten Zugriffsrechten für bestimmte Behälter in einer Organisation (Read/Write Token). Ein Token kann in die Zwischenablage kopiert werden, was das spätere Einfügen während der Checkmk-Konfiguration erleichtert. Der Token für die Verbindung zum Checkmk-Server sollte natürlich Lese- und Schreibrechte für den Behälter haben, der in Checkmk konfiguriert wird.

Genaueres dazu finden Sie in der InfluxDB-Dokumentation.

Mit diesen Informationen zur Hand, erfolgt die Konfiguration in Checkmk mit nur zwei unkomplizierten Schritten.

2.2. Checkmk mit InfluxDB verbinden

Öffnen Sie das Setup-Menü und schalten Sie den Show-more-Modus an — denn nur dann wird der Menüeintrag Setup > Exporter > InfluxDB Connections angezeigt. Wählen Sie diesen aus, um sich die Liste der existierenden InfluxDB-Verbindungen anzeigen zu lassen. Da Sie hier wahrscheinlich noch nichts konfiguriert haben, wird die Liste leer sein.

Eine Verbindung ist die Voraussetzung für das Versenden der Daten. Ohne Regel zur Auswahl der Metrikinformationen werden aber keine Daten versendet.

Erstellen Sie also zuerst eine neue Verbindung mit Symbol zum Erstellen einer neuen Verbindung. Add connection:

Die allgemeinen Eigenschaften einer InfluxDB-Verbindung.
ID, Titel und Instanzauswahl reichen für die allgemeinen Eigenschaften

In den General Properties bestimmen Sie, wie gewohnt, die interne ID und den Titel für die Verbindung.

Falls mit der aktuellen Instanz weitere Instanzen verbunden sind, wie das beim verteilten Monitoring der Fall ist, können Sie unter Site restriction die Verbindung auf bestimmte Instanzen einschränken. Dazu verschieben Sie zuerst den Eintrag All sites in die linke Spalte und schieben anschließend die Instanzen, die Metriken erhalten sollen, aus der linken in die rechte Spalte Selected. In der linken Spalte verbleiben dann die Instanzen, die auf Metriken verzichten müssen.

Dann geht es weiter im nächsten Kasten mit den InfluxDB Connection Properties:

Die InfluxDB-spezifischen Eigenschaften der Verbindung.
Die InfluxDB-spezifischen Eigenschaften festlegen

Geben Sie hier den ersten Satz der Parameterwerte ein, die Sie im vorherigen Abschnitt zusammengestellt haben.

Sichern Sie die Verbindung mit Save und Sie kehren zurück zur Liste der Verbindungen:

Liste der InfluxDB-Verbindungen.
Aktiv, inaktiv, mit oder ohne Regel? Die Verbindungsliste zeigt es

In der Verbindungsliste zeigt die Spalte Enabled wichtige Informationen zum Zustand der Verbindung. Wundern Sie sich nicht, dass die Liste im obigen Bild drei Einträge enthält: Um alle Symbole in Aktion sehen zu können, haben wir die Liste um zwei weitere Verbindungen erweitert. Aus der ersten Spalte in Enabled können Sie ablesen, ob die Verbindung Symbol zur Anzeige einer aktiven Verbindung. aktiviert oder Symbol zur Anzeige einer deaktivierten Verbindung. deaktiviert ist. In der zweiten Spalte sehen Sie, ob es für die Verbindung bereits eine Regel Knopf zur Anzeige der Liste mit den Regeln im Regelsatz. gibt oder Knopf zur Erstellung einer neuen Regel. nicht.

Daten werden über eine Verbindung erst dann gesendet, wenn diese mit einer Regel zur Auswahl der Metrikinformationen verknüpft ist. Diese Regel heißt Send metrics to InfluxDB. Die Regelsymbole sind Knöpfe und bieten eine Abkürzung zur Regelerstellung: Bei einer Verbindung mit Regel klicken Sie auf Knopf zur Anzeige der Liste mit den Regeln im Regelsatz., um die Übersichtsseite des Regelsatzes zu öffnen, in der hervorgehoben ist, welche Regel für die Verbindung greift oder greifen würde. Bei einer regellosen Verbindung führt ein Klick auf Knopf zur Erstellung einer neuen Regel. direkt in die Seite zur Erstellung der Regel.

Was in dieser Regel festgelegt werden kann, beschreiben wir im folgenden Kapitel genau.

2.3. Metrikinformationen auswählen

Welche Daten an den InfluxDB-Server gesendet und wo sie abgelegt werden, bestimmen Sie in Checkmk mit einer Regel.

Den Regelsatz Send metrics to InfluxDB finden Sie unter Setup > Services > Service monitoring rules, noch schneller mit der Suche im Setup-Menü und am schnellsten per Klick in der Verbindungsliste:

Regel zur Auswahl der Metrikinformationen zum Versand über die InfluxDB-Verbindung.
Die Auswahl der Metrikinformationen erfolgt per Regel

Im Kasten Send metrics to InfluxDB wählen Sie zuerst die im vorherigen Abschnitt erstellte Verbindung aus und legen dann fest, wo die Daten auf dem InfluxDB-Server abgelegt werden. Hier geben Sie den zweiten Satz der gesammelten Informationen über den InfluxDB-Server ein. Mit Organization entscheiden Sie, welche Benutzer die Daten erhalten, und mit Bucket, wie lange die Metriken vorgehalten werden. Eine Mehrfachauswahl ist nicht möglich, d.h. Sie können die Metriken z.B. nicht an mehrere Behälter unterschiedlicher Organisationen schicken.

Im folgenden wählen Sie die Metrikdaten aus, die von Checkmk an den InfluxDB-Server gesendet werden. Metrics of service ist standardmäßig bereits ausgewählt und aktiviert den Metrikversand. Durch Ankreuzen der Checkbox Service state wird der Service-Zustand als eigene Metrik gesendet.

Nach Aktivierung von Additional values per metric können Sie den Metriken eine Reihe von Metadaten mitgeben, die der Darstellung dienen, z.B. den Zustand des zugehörigen Services (State of service) und die Schwellwerte (Thresholds). Beachten Sie dabei, dass Unit derzeit nur bei Metriken aus aktiven Checks funktioniert, wenn diese das unterstützen. Der Grund liegt darin, dass nur aktive Checks optional die Einheit mitliefern und der CMC auf andere keinen Zugriff hat.

In der letzten Liste Tags to use werden den Metriken Metadaten wie Host-Merkmale oder Labels hinzugefügt, die hauptsächlich der Filterung dienen und dafür optimiert sind. Die standardmäßig ausgewählten Host name und Service name sind dabei Pflichteinträge, die nicht abgewählt werden können.

In InfluxDB werden die Additional values per metric als fields und die Tags to use als tags gespeichert.

Zum Schluss aktivieren Sie die Änderungen für die Erstellung der Verbindung und der Regel. Bei Problemen mit dem Metrikversand finden Sie weiter unten Informationen zur Fehlerdiagnose.

2.4. Metriken in InfluxDB anzeigen

Wenn die Metriken von Checkmk beim InfluxDB-Server angekommen sind, können sie in der InfluxDB-GUI angezeigt werden. Das folgende Bild zeigt als Beispiel den Graphen für die Metrik total_used, die den verwendeten Arbeitsspeicher anzeigt:

Anzeige der Metrik zum verwendeten Arbeitsspeicher in der InfluxDB-GUI.
In der InfluxDB-GUI gibt es unterhalb des Graphen Listen zur Auswahl und zum Filtern

Hinweis: Diese Metrik finden Sie in Checkmk beim Service Memory unter dem Metriknamen Total used memory.

3. Metriken an Graphite senden

Graphite-Logo.

Auch Graphite ist ein bekanntes Open Source DBMS für Zeitreihen, um Metriken zu speichern, abzurufen, weiterzugeben und zu visualisieren. Graphite besteht aus dem Carbon Daemon, der auf die Daten wartet und diese in einer Datenbank speichert, aus der sie mit der Graphite Webanwendung aufbereitet und als Graphen angezeigt werden. Mit Checkmk können Sie die Metriken im Plaintext-Protokoll an den Carbon Daemon von Graphite weiterleiten, der auf Port 2003 auf Daten dieses Protokolls wartet. Im Plaintext-Protokoll ist ein Datensatz sehr einfach aufgebaut im Format <Metrikpfad> <Wert> <Zeitstempel>, wobei Metrikpfad ein durch Punkte getrennter eindeutiger Bezeichner ist.

Anders als bei der InfluxDB-Verbindung werden standardmäßig alle Metrikdaten gesendet sobald eine Graphite-Verbindung aktiviert ist. Falls Sie dies nicht wünschen, sollten Sie vor der Aktivierung der Verbindung die Metriken per Regel auswählen und dann Regeln und Verbindung zusammen aktivieren.

3.1. Metrikinformationen auswählen

Den Regelsatz Send metrics to Graphite finden Sie unter Setup > Services > Service monitoring rules. Mit ihm können Sie einerseits die Werte auswählen, die mit den Metriken mitgeliefert werden sollen, und zum anderen den Versand auf bestimmte Hosts und Services einschränken:

Regel zur Auswahl der Metrikinformationen zum Versand über die Graphite-Verbindung.
Auch bei Graphite erfolgt die Auswahl der Metrikinformationen per Regel

Da ohne einschränkende Regel alle Daten gesendet werden, empfiehlt es sich zuerst eine Regel zu erstellen, die den Versand global abschaltet, indem Sie alle Checkboxen im obigen Bild abwählen. Erstellen Sie anschließend eine spezifische Regel mit den gewünschten Metrikinformationen für die Hosts und Services, deren Metriken an den Graphite-Server übermittelt werden sollen. Ordnen Sie die spezifische vor der globalen Regel an:

Liste der Regeln für den Versand über die Graphite-Verbindung.
Durch die Reihenfolge der beiden Regeln werden nur Metriken des Hosts myhost versendet

3.2. Checkmk mit Graphite verbinden

Die Verbindung zum Graphite-Server richten Sie ein unter Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite. Klicken Sie dort auf Add new Graphite connection:

Die Eigenschaften einer Graphite-Verbindung.
Die Graphite-Verbindung wird in den Global Settings erstellt

Neben den offensichtlichen Angaben zum Graphite-Server (Name und Port-Nummer des Carbon-Plaintext-Protokolls) können Sie mit Optional variable prefix einen Präfix konfigurieren, der jedem Host-Namen vorangestellt wird, um z.B. eindeutige Namen zu erzwingen. Checkmk setzt den Metrikpfad für das Plaintext-Protokoll auf <Host>.<Service>.<Metrik>.

Die Aktivierung der Änderungen für die Regeln und die Verbindung schließt die Konfiguration für Graphite ab.

3.3. Metriken in Graphite anzeigen

Auch in der Graphite-GUI können Sie sich die von Checkmk empfangenen Metriken ansehen. Das folgende Bild zeigt den Graphen für die Metrik total_used, den wir bereits oben als Beispiel in der InfluxDB-GUI gezeigt haben:

Anzeige der Metrik zum verwendeten Arbeitsspeicher in der Graphite-GUI.
In der Graphite-GUI erfolgt die Auswahl in einem Navigationsbereich links vom Graphen

4. Fehlerdiagnose

Sollten die Metriken nicht dort ankommen, wo Sie sie erwarten, finden Sie Diagnoseinformationen in Ihrer Instanz in der Datei ~/var/log/cmc.log — der Log-Datei des Checkmk Micro Core.

Folgendes Beispiel zeigt die Meldungen, falls der in Checkmk konfigurierte Behälter (bucket) auf dem InfluxDB-Server nicht existiert:

~/var/log/cmc.log
2022-01-10 11:41:35 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully initiated connection
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully connected
2022-01-10 11:41:36 [3] [influxdb https://myinfluxdb.example.com:8086] POST [404] {"code":"not found","message":"bucket \"my_bucket\" not found"}
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Closing connection

Folgendes Beispiel zeigt die Meldungen im Fall, dass eine Verbindung zum Graphite-Server nicht klappt:

~/var/log/cmc.log
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Successfully initiated connection
2021-12-15 17:33:33 [4] [carbon 10.0.0.5:2003] Connection failed: Connection refused
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Closing connection

Der Checkmk Micro Core versucht in solchen Situationen von sich aus immer wieder, die Verbindung aufzubauen.

Wichtig: Metriken, die während einer Zeit anfallen, zu der keine Verbindung zum Zielsystem besteht, werden aus Performance-Gründen nicht zwischengespeichert, sondern gehen verloren (bzw. sind dann nur in den RRDs von Checkmk verfügbar).

Hinweis: Falls Ihnen die Log-Meldungen nicht aussagekräftig genug sind, können Sie die Standardwerte zum Log Level ändern unter Setup > General > Global Settings > Monitoring Core > Logging of the core. Hier finden Sie Einträge für das Logging der InfluxDB (InfluxDB processing) und für Graphite (Carbon connections).

Auf dieser Seite