Checkmk
to checkmk.com

1. Einleitung

grafana logo

Checkmk verfügt mit seinem integrierten Graphingsystem über ein umfangreiches System zum Aufzeichnen und Visualisieren von Metriken. Dennoch kann es sinnvoll sein, Grafana als externes Graphingsystem anzubinden, z.B. weil Sie Grafana bereits nutzen und die Daten von Checkmk mit Daten aus anderen Systemen in gemeinsamen Dashboards zusammenführen möchten.

Beginnend mit Version 2.0.0 ist es in allen Checkmk-Editionen möglich, Checkmk direkt als Datenquelle in Grafana 8.x anzusprechen und einzelne Metriken oder sogar ganze Graphen, wie sie in Checkmk vordefiniert sind, in Grafana anzeigen zu lassen. Zusätzlich können Sie dynamisch eigene Graphen erstellen lassen, indem Sie über reguläre Ausdrücke eine Gruppe von Hosts und Services bestimmen, von denen bestimmte Metriken in dem Graphen berücksichtigt werden sollen.

Dieser Artikel beschreibt, wie Sie Ihre Metriken aus Checkmk in Grafana abrufen und darstellen. Eine ausführliche Anleitung, wie Sie Grafana nutzen und konfigurieren können, finden Sie in der Dokumentation bei Grafana Labs.

Das Grafana-Plugin wird unabhängig von Checkmk entwickelt und in einem eigenen Github-Repository gepflegt. Da die Installation des Plugins in Grafana erfolgt, ist eine Auslieferung zusammen mit Checkmk nicht sinnvoll. Eine Aufnahme in die offizielle Plugin-Sammlung von Grafana wird gerade durch die Grafana-Maintainer geprüft. Ist diese Prüfung abgeschlossen, wird die Installation direkt aus der Grafana-Oberfläche möglich sein.

2. Voraussetzungen in Checkmk prüfen

Wenn Sie Ihre Instanz mit Checkmk 2.1.0 erzeugt haben — also den Befehl omd create mit der Version 2.1.0 ausgeführt haben — ist die Checkmk Web API in den globalen Einstellungen standardmäßig deaktiviert. In diesem Fall müssen Sie die Web API durch das Entfernen des Hakens in Setup > General > Global Settings > Site management > Disable Web API wieder aktivieren.

Aktivieren der Web API in Checkmk {v21

Ab der Version 2.2.0 von Checkmk wird das Plugin unsere REST-API unterstützen.

3. Das Plugin in Grafana einrichten

3.1. Plugin installieren

Laden Sie einfach die aktuellste Version als Zip-Datei herunter und kopieren Sie sie, z.B. mit scp, auf den Grafana-Server.

grafana download plugin

Alternativ können Sie die Datei natürlich auch direkt über die Kommandozeile laden. Beachten Sie, dass Sie dafür die korrekte Version wissen müssen.

root@linux# wget https://github.com/Checkmk/grafana-checkmk-datasource/releases/download/v2.0.2/tribe-29-checkmk-datasource-2.0.2.zip

Entpacken Sie jetzt das Zip-Archiv:

root@linux# unzip tribe-29-checkmk-datasource-2.0.2.zip

Verschieben Sie den entstandenen Ordner in das Plugin-Verzeichnis von Grafana. Üblicherweise ist das der Pfad /var/lib/grafana/plugins/:

root@linux# mv -v tribe-29-checkmk-datasource /var/lib/grafana/plugins/tribe-29-checkmk-datasource

Ändern Sie den Eigentümer auf den Grafana-Nutzer (meist grafana):

root@linux# chown -R grafana:grafana /var/lib/grafana/plugins/tribe-29-checkmk-datasource

Installation über das Klonen des Git-Archivs (wie es zuvor in diesem Dokument beschrieben wurde) ist nicht mehr möglich.

3.2. Nicht signierte Plugins zulassen

Seit Grafana 8.0 ist es nicht mehr ohne Weiteres möglich, externe Plugins einzubinden, solange sie nicht signiert sind. Das trifft auch auf das Checkmk-Plugin zu, so dass Sie einen zusätzlichen Schritt benötigen.

Passen Sie dazu die Konfigurationsdatei /etc/grafana/grafana.ini im Abschnitt [plugins] an. Ändern Sie hier die Zeile ;allow_loading_unsigned_plugins = wie folgt. Achten Sie dabei darauf, das Semikolon am Zeilenanfang zu entfernen:

/etc/grafana/grafana.ini
[plugins]
allow_loading_unsigned_plugins = tribe-29-checkmk-datasource

Mit dieser Einstellung fügen Sie eine Ausnahme für dieses eine Plugin hinzu. Sollten Sie Grafana in einem (Docker-) Container einsetzen, verlinken Sie entweder die angepasste INI-Datei in den Container oder erstellen ein Volume, welches Sie auf das Verzeichnis im Container (/etc/grafana) mappen. Es folgt ein Beispiel, wie Sie mit --mount die INI-Datei verlinken. Beachten Sie, dass es sich hier nur um ein Beispiel handelt und wahrscheinlich nicht direkt auf Ihre Umgebung passt:

user@host:~$ sudo docker run -d --mount type=bind,source=/home/user/grafana/grafana.ini,target=/etc/grafana/grafana.ini -p 3000:3000 --name grafana -v grafana-plugins:/var/lib/grafana/plugins -v grafana-db:/var/lib/grafana grafana/grafana

3.3. Neustart des Grafana-Dienstes

Nach Änderung der Konfigurationsdatei, Updates oder der Installation des Plugins starten Sie den Grafana-Serverdienst neu:

root@linux# systemctl restart grafana-server

Anschließend ist das Plugin in der Oberfläche von Grafana verfügbar und kann aktiviert und eingerichtet werden.

3.4. Plugin aktivieren und einrichten

Nachdem die notwendigen Dateien installiert wurden, können Sie das Plugin in Grafana aktivieren. Wechseln Sie dazu in die Konfiguration und wählen den Reiter Data sources aus. Hier können Sie über den Button Add data source eine neue Datenquelle hinzufügen:

grafana plugins overview

Den Eintrag zu Checkmk finden Sie unten in der Kategorie Others:

grafana plugin cmk

Die Konfigurationsmaske zu der Datenquelle ist recht einfach gehalten. Geben Sie hier die URL zu Ihrer Instanz, den Typ Ihrer Edition und einen Automationsbenutzer an, der Rechte hat, auf das Web-API zuzugreifen. Wichtig: Wenn Sie Checkmk in einer verteilten Umgebung verwenden, dann geben Sie hier die URL zu Ihrer Zentralinstanz an:

grafana plugin config

Falls Sie mehrere Checkmk-Instanzen anbinden möchten, können Sie die einzelnen Verbindungen optional mit einem eindeutigen Namen versehen. Ansonsten lassen Sie den Standard tribe-29-checkmk-datasource einfach stehen.

Nachdem Sie die Verbindung Mit dem Button Save & test gespeichert haben, steht sie Ihnen als Datenquelle in Grafana zur Verfügung und Sie können Ihre ersten Graphen konfigurieren.

4. Graphen erstellen

4.1. Ein leeres Dashboard erzeugen

Dashboards werden in Grafana über das Pluszeichen auf der linken Seite erzeugt. Klicken Sie auf Dashboard, um ein neues Dashboard zu erstellen:

grafana new dashboard

4.2. Eine einzelne Metrik eines Hosts anzeigen

Das simpelste Dashboard zeigt einen einzigen Graphen eines Services eines Hosts. Dies kann auch die Metrik eines lokalen Checks sein, für den keine vorgefertigten Graphen existieren. In einem bestehenden oder dem eben erzeugten Dashboard erstellen Sie ein neues panel. Wählen Sie hier zuerst Add Panel aus:

grafana dashboard addpanel

Mit Erstellung des Panels gelangen Sie sofort zum Hinzufügen einer neuen Abfrage (Query). Als Data source wählen Sie im Menü tribe-29-checkmk-data-source aus.

Der Zugriff auf zu visualisierende Daten unterscheidet sich etwas zwischen CRE Checkmk Raw Edition und CEE Checkmk Enterprise Editions: In der Raw Edition arbeiten Sie mit vordefinierten Menüs für Instanz, Host-Name, Service und so weiter. In den Enterprise Editions haben Sie die Möglichkeit, Kaskaden von Filtern zu bestimmen. Dies erlaubt eine sehr detaillierte Auswahl auch unter Verwendung regulärer Ausdrücke. Das folgende einfache Beispiel ist so gewählt, dass Sie es mit beiden Editionen durchspielen können.

Wählen Sie zunächst die Site, danach filtern Sie nach einem Hostname im Monitoring. Nutzen Sie für den ersten Test einen beliebigen Host, der den Windows- oder Linux-Agenten nutzt. Als Service wählen Sie Check_MK. Setzen Sie den Typ der Aggregation auf Lines. Als Graph type stehen Single metric oder Template (Vorlagen) zur Auswahl: Templates übernehmen Metriken aus Checkmk, welche auch kombinierte Graphen enthalten können. Unsere Screenshots zeigen hier die Single metric, welche die Gesamtausführungszeit des Agenten (Time spent waiting for Checkmk agent) enthält.

grafana dashboard single config
Auswahl der Metriken über Filter in den CEE Checkmk Enterprise Editions
grafana dashboard single config cre
Auswahl der Metriken über vordefinierte Menüs in der CRE Checkmk Raw Edition

Grafana zeigt das Ergebnis direkt an. Klicken Sie zunächst auf Apply, um den Graphen zu sichern. Dies bringt Sie zurück zum Dashboard, wo Sie oben rechts auf das Diskettensymbol (Save dashboard) klicken, um es zu speichern. Hier werden Sie aufgefordert, einen Titel für das neue Dashboard anzugeben.

grafana dashboard single view
Neues Dashboard mit wiedererkennbarer Benennung

4.3. Einen vordefinierten Graphen aus Checkmk anzeigen

Die Entwickler von Checkmk haben bereits viele korrespondierende Metriken in gemeinsamen Graphen zusammengefasst, damit Nutzer leichter einen Überblick über verschiedene Aspekte einer einzigen Ressource erhalten. Sie können die Metriken aus einem solchen vorgefertigten Graphen direkt in Grafana anzeigen lassen.

Die Vorgehensweise entspricht zunächst der im vorherigen Abschnitt erläuterten. Allerdings wählen Sie zum Abschluss als Graph type den Eintrag Template und das zu verwendende Template des Services.

grafana dashboard predefined config

Sind Sie mit der getroffenen Auswahl zufrieden, klicken Sie den Button Apply. Der Graph ist nun im gewählten Dashboard verfügbar.

grafana dashboard predefined view

4.4. Komplexe Graphen erstellen

Gerade in einem dynamischen Cluster möchte man oft den gesamten Verlauf einer Metrik über alle beteiligten Hosts verfolgen können, ohne einen Graphen jedes Mal anpassen zu müssen, wenn ein neuer Knoten hinzukommt oder wegfällt. Um dies zu erreichen, haben Sie verschiedene Möglichkeiten, Graphen dynamisch anzupassen.

Die erste Möglichkeit besteht in der Filterung nach Host Labels oder Host Tags statt der Auswahl einzelner Hosts. Eine weitere Möglichkeit ist die Verwendung regulärer Ausdrücke. Sie können reguläre Ausdrücke auf Hosts oder Services anwenden. Im Beispiel matcht filesystem alle Services, die filesystem enthalten — egal, wie viele Dateisysteme ein Host eingebunden hat.

grafana dashboard combined config

Mit filesystem.*nvme würden Sie die Auswahl auf alle Dateisysteme auf NVME-Laufwerken einschränken, ganz gleichen welchen Dateisystemtyp diese nutzen, da der Teil des Strings zwischen filesystem und nvme beliebig sein kann.

Zusätzlich zu den erweiterten Filtermöglichkeiten bestimmen Sie mit Aggregation die Darstellung der Metriken im Graphen und mit Graph, welcher Graph als Referenz herangezogen werden soll. Beachten Sie, dass nur dann Metriken zu einem Host/Service angezeigt werden, wenn dieser auch über den ausgewählten Graphen verfügt. Der Graph sieht dann zum Beispiel so aus:

grafana dashboard combined view

5. Änderungen gegenüber früheren Versionen

5.1. Weggefallene Variablen

Versionen des Plugins vor 2.0b1 haben zugelassen, die angezeigten Metriknamen mittels Variablen zu steuern. Erlaubt waren hier $title, $site, $host und $service. Diese Funktion wurde mit der Version 2.0b1 des Grafana-Plugins entfernt, weil sie letztlich Funktionalität duplizierte, die inzwischen Teil von Grafana ist. Wenn Sie bspw. den Sitenamen im Namen einer Metrik, aber nicht als Filterkriterium benötigen, legen Sie einen Filter an, der mit einem Asterisk * als regulärem Ausdruck alle Sites matcht.

5.2. Umbenennung über reguläre Ausdrücke

Im Editiermodus jedes Panels finden Sie einen Reiter Transform. Mit dem hier vorhandenen Unterpunkt Rename by regex können Sie die Bezeichnung von Metriken umsortieren oder nicht benötigte Informationen unterdrücken. Unser folgendes Beispiel sucht zwei durch Komma und folgendes Leerzeichen getrennte Zeichengruppen, vertauscht diese und stellt explizit: Service und Host vorne an:

grafana series renaming regex

Die Variablen $1 und $2 entsprechen hierbei den in der Zeile darüber "eingefangenen" Zeichenketten (Match-Gruppen oder Capture Groups). Grafana erlaubt auch verschachtelte Match-Gruppen. Einen Überblick über deren Möglichkeiten zeigt der entsprechende Abschnitt im Artikel zu regulären Ausdrücken.

6. Dateien und Verzeichnisse

Pfad Bedeutung

/var/lib/grafana/plugins/

Hier sucht Grafana nach (neuen) Plugins. Jedes Plugin bekommt dabei ein eigenes Unterverzeichnis. Das Plugin von Checkmk legen Sie daher hier ab.

/etc/grafana/

Konfigurationsverzeichnis von Grafana.

/etc/grafana/grafana.ini

Zentrale Konfigurationsdatei von Grafana. Hier legen Sie fest, welche unsignierten Plugins Sie zulassen.

Auf dieser Seite