Checkmk
to checkmk.com

1. Einleitung

In Cloud- und Containerumgebungen ist es immer öfter der Fall, dass zu überwachende Hosts automatisch entstehen und vergehen. Die Konfiguration des Monitorings hier aktuell zu halten, ist manuell nicht mehr sinnvoll möglich. Aber auch klassische Infrastrukturen wie z.B. VMware-Cluster können sehr dynamisch sein, und selbst wenn eine manuelle Pflege hier noch möglich ist, ist sie doch auf jeden Fall lästig.

CEE Die kommerziellen Editionen von Checkmk unterstützen Sie bei diesem Thema mit einem smarten Werkzeug: der dynamischen Host-Verwaltung (dynamic host management). Die dynamische Host-Verwaltung nutzt dabei Informationen aus der Überwachung von Amazon Web Services (AWS), Microsoft Azure, Kubernetes, VMware ESXi und anderen Quellen, um vollautomatisch Hosts in das Monitoring aufzunehmen — und auch wieder zu entfernen.

Die dynamische Host-Verwaltung ist dabei generisch gehalten und nicht auf das Anlegen von Hosts beschränkt. Sie bildet die Grundlage für künftige Erweiterungen von Checkmk, welche dynamisch die Konfiguration anpassen. Zu diesem Zweck arbeitet die dynamische Host-Verwaltung mit Verbindungen (connections). Jede Verbindung kann aus einer ganz bestimmten Art von Quelle Informationen holen und hat dazu ihre eigene spezifische Konfiguration.

Die Software-Komponente für die dynamische Host-Verwaltung ist der Dynamic Configuration Daemon (DCD). Die Software-Architektur des DCD wurde in Checkmk 2.4.0 komplett überarbeitet, um den Anforderungen von großen, hochdynamischen Umgebungen gerecht zu werden und eine stabile und sichere Verarbeitung zu gewährleisten. Dabei wird nunmehr die Sammlung der Informationen aus den konfigurierten Verbindungen entkoppelt von den daraus resultierenden Konfigurationsänderungen in Checkmk. Die anstehenden Konfigurationsänderungen werden in Warteschlangen organisiert und in Zyklen sequentiell abgearbeitet. Dies garantiert eine stabile und sichere Verarbeitung. Mit den Host-Manager-Einstellungen werden Ihnen Optionen angeboten, um die Verarbeitungszyklen anzupassen. Mehr dazu steht im Kapitel Konfiguration.

2. Verbindungstypen

Durch die Einrichtung einer Verbindung in der dynamischen Host-Verwaltung können Sie Hosts automatisch ins Monitoring aufnehmen und auch wieder entfernen lassen, um so immer zeitnah die Realität abzubilden. Dazu analysiert die dynamische Host-Verwaltung die vorhandenen Daten, vergleicht, welche der Hosts bereits in der Konfigurationsumgebung vorhanden sind und legt die fehlenden Hosts neu an bzw. entfernt inzwischen weggefallene. Anschließend wird auf den Hosts (optional) eine Service-Erkennung durchgeführt und abschließend die Änderungen aktiviert, damit der aktuelle Zustand in der Monitoring-Umgebung sichtbar ist.

2.1. Piggyback-Verbindung

Mit der Piggyback-Verbindung werden — wenig überraschend — Piggyback-Daten ausgewertet. Dieser Verbindungstyp ist in Checkmk universell einsetzbar, denn der Piggyback-Mechanismus wird von Checkmk in allen Situationen verwendet, wo die Abfrage eines Hosts (meist per Spezialagent) Daten zu anderen Hosts liefert (meist virtuelle Maschinen oder Cloud-Objekte).

Checkmk nutzt Piggyback zum Beispiel bei der Überwachung von Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Kubernetes, Docker und VMware ESXi. In allen diesen Fällen werden beim Monitoring automatisch Daten zu anderen Hosts, z.B. den virtuellen Maschinen (VM), geholt, die nicht direkt per Netzwerk angesprochen werden und auf denen auch kein Checkmk-Agent laufen muss. Solche Hosts können Sie automatisch ins Monitoring aufnehmen und auch wieder entfernen lassen.

Um eine Piggyback-Verbindung zu nutzen, benötigen Sie als einzige Voraussetzung Piggyback-Daten. Diese haben Sie immer dann, wenn Sie das Monitoring für AWS, Azure und Co. korrekt aufgesetzt haben.

Sie können das auch leicht auf der Kommandozeile überprüfen, denn die Piggyback-Daten werden von Checkmk im Verzeichnis ~/tmp/check_mk/piggyback angelegt:

OMD[mysite]:~$ ls tmp/check_mk/piggyback
myvm01  myvm02  myvm03

Wenn dieses Verzeichnis nicht leer ist, dann wurden in dieser Instanz Piggyback-Daten erzeugt.

2.2. OpenTelemetry-Verbindung

CEE Checkmk 2.4.0 bietet ab CSE Checkmk Cloud, d. h. für Checkmk Cloud und Checkmk MSP, eine experimentelle Unterstützung für die Verarbeitung von OpenTelemetry-Metriken. Dafür sammelt in Checkmk ein OpenTelemetry-Kollektor Metrikdaten, die der Kollektor per OpenTelemetry Protocol (OTLP) erhält oder über einen Prometheus-Endpunkt abruft. Bei der Konfiguration des Kollektors werden außerdem Regeln aufgestellt, um aus den Daten Host-Namen für Checkmk zu erzeugen. Fertig konfiguriert legt der Kollektor los, sammelt die Daten und legt sie in der Checkmk-Instanz ab mit Dateinamen, die den Host-Namen entsprechen.

Die Einrichtung von OpenTelemetry einschließlich des OpenTelemetry-Kollektors wird in einem eigenen Artikel beschrieben, der hier verlinkt wird, sobald er geschrieben ist.

Die OpenTelemetry-Daten sind in der Instanz immer dann verfügbar, wenn der OpenTelemetry-Kollektor korrekt aufgesetzt wurde. Sie können das auf der Kommandozeile überprüfen, denn die OpenTelemetry-Daten werden im Verzeichnis ~/tmp/check_mk/otel_collector angelegt:

OMD[mysite]:~$ ls tmp/check_mk/otel_collector
myotelapp01  myotelapp02  myotelapp03

Wenn dieses Verzeichnis nicht leer ist, dann wurden in dieser Instanz OpenTelemetry-Daten erzeugt.

3. Verbindung einrichten

Öffnen Sie die Seite der dynamischen Host-Verwaltung mit Setup > Hosts > Dynamic host management:

Die Seite 'Dynamic host management' mit leerer Verbindungsliste.

Legen Sie mit Symbol zum Erstellen eines neuen Objekts. Add connection eine neue Verbindung an.

3.1. Allgemeine Eigenschaften

Der erste Teil der Konfiguration sind die General properties:

Allgemeine Eigenschaften beim Hinzufügen einer neuen Verbindung.

Hier vergeben Sie, wie so oft, eine eindeutige ID dieser Verbindung und einen Titel. Wichtig ist ferner die Auswahl der Checkmk-Instanz, auf der diese Verbindung laufen soll. Da die Daten immer nur lokal verarbeitet werden können, muss die Verbindung immer einer konkreten Instanz zugeordnet werden.

3.2. Eigenschaften einer Piggyback-Verbindung

Der zweite Teil sind die Verbindungseigenschaften (Connection properties). Da es hier einiges zu konfigurieren gibt, nehmen wir uns die Optionen Stück für Stück vor.

Erster Teil der Eigenschaften einer Piggyback-Verbindung zu Quell-Host und Synchronisierungsintervall.

Für eine Piggyback-Verbindung wählen Sie Piggyback data als Connector type aus.

Mit Restrict source hosts können Sie die Hosts auf die Piggyback-Hosts einschränken. Das sind in der Regel die Hosts, für die jeweils ein Spezialagent eingerichtet wurde. Nur für diese Hosts wird die dynamische Host-Verwaltung aktiv. Die Einschränkung erfolgt in dem zugehörigen Eingabefeld, dessen Inhalt als regulärer Ausdruck interpretiert wird. Wenn Sie das erste Eingabefeld editiert haben, wird automatisch das nächste geöffnet, das heißt, Sie können mehrere reguläre Ausdrucke festlegen.

Mit dem Sync interval bestimmen Sie, wie oft die Verbindung nach neuen Hosts suchen soll. Wenn Sie den regulären Check-Zeitraum von einer Minute beibehalten haben, macht es keinen Sinn, das wesentlich öfter zu machen, da ja maximal einmal pro Minute eine Änderung der Daten stattfinden kann. In dynamischeren Umgebungen können Sie sowohl Check-Zeitraum als auch Verbindungsintervall auch auf deutlich kleinere Werte einstellen. Dies hat allerdings auch eine höhere CPU-Auslastung auf dem Checkmk-Server zur Folge.

Unter Piggyback creation options muss mindestens ein Eintrag existieren. Mit Add new entry können Sie auch weitere hinzufügen:

Zweiter Teil der Eigenschaften einer Piggyback-Verbindung zu den automatisch erstellten Hosts.

Hier geht es um die Eigenschaften der automatisch erzeugten Hosts, für die Sie zwei wichtige Dinge festlegen können: In welchem Ordner die Hosts erzeugt werden sollen (Create hosts in) und welche Host-Attribute gesetzt werden sollen. Vier wichtige Attribute sind dabei voreingestellt, welche für Piggybacked-Host meistens sinnvoll sind:

  1. Kein Monitoring per SNMP.

  2. Kein Checkmk-Agent auf dem Host selbst (Daten kommen ja per Piggyback).

  3. Piggyback-Daten werden immer erwartet (und es gibt einen Fehler, wenn diese fehlen).

  4. Die Hosts haben keine IP-Adresse.

Nur wenn Sie die Checkbox bei Delete vanished hosts aktivieren, werden Hosts auch wieder entfernt, wenn Sie in Ihrer dynamischen Umgebung verschwunden sind.

Möchten Sie nicht automatisch alle Piggybacked-Hosts anlegen, so können Sie das mit der Option Only add matching hosts mit einem regulären Ausdruck einschränken.

Im dritten und letzte Teil der Verbindungseigenschaften können Sie durch Aktivieren der Checkbox bei Service discovery festlegen, dass auf den automatisch erzeugten Hosts eine Service-Erkennung durchgeführt wird:

Dritter Teil der Eigenschaften einer Piggyback-Verbindung zum automatischen Entfernen der Hosts.

Die restlichen drei Optionen beeinflussen das Entfernen der automatisch erstellten Hosts, ein Thema, das in einem eigenen Kapitel noch detailliert erläutert wird.

Die Option Prevent host deletion after initialization betrifft einen kompletten Neustart des Checkmk-Servers selbst. Denn in dieser Situation fehlen erst einmal die Daten von allen Hosts, bis diese zum ersten Mal abgefragt wurden. Um ein sinnloses Löschen und Wiedererscheinen von Hosts zu vermeiden (welches auch mit wiederholten Benachrichtigungen zu schon bekannten Problemen einhergeht), wird standardmäßig in den ersten 10 Minuten auf ein Löschen generell verzichtet. Diese Zeit können Sie hier einstellen.

Die Option Validity of missing data behandelt den Fall, dass ein Host, aufgrund dessen Monitoring-Daten etliche Hosts automatisch angelegt wurden, keine Piggyback-Daten mehr liefert. Das kann z.B. der Fall sein, wenn ein Zugriff auf AWS und Co. nicht mehr funktioniert. Oder natürlich auch, wenn Sie den Spezialagenten aus der Konfiguration entfernt haben. Die automatisch erzeugten Hosts bleiben dann noch die eingestellte Zeit im System, bevor sie aus der Setup-GUI entfernt werden.

Die Option Validity of outdated data ist ähnlich, behandelt aber den Fall, dass schon noch Daten kommen, allerdings für manche Hosts nicht mehr. Das ist der normale Fall wenn z.B. virtuelle Maschinen oder Cloud-Dienste nicht mehr vorhanden sind. Wenn Sie möchten, dass die entsprechenden Objekte aus Checkmk dann zeitnah verschwinden, dann setzen Sie hier eine entsprechend kurze Zeitspanne.

3.3. Eigenschaften einer OpenTelemetry-Verbindung

Die Optionen bei der Erstellung einer Piggyback- und OpenTelemetry-Verbindung, die ab Checkmk Cloud eingerichtet werden kann, sind nahezu identisch. Daher werden die Eigenschaften einer OpenTelemetry-Verbindung im Schnelldurchlauf vorgestellt.

Eigenschaften einer OpenTelemetry-Verbindung.

Für eine OpenTelemetry-Verbindung wählen Sie Opentelemetry collector data als Connector type aus.

Restrict source hosts ist für OpenTelemetry nicht relevant. Möchten Sie nicht automatisch alle Hosts anlegen lassen, so können Sie das mit der Option Only add matching hosts weiter unten erreichen. Mit Sync interval bestimmen Sie, wie oft die Verbindung nach neuen Hosts suchen soll.

Unter Open telemetry hosts creation options legen Sie fest, in welchem Ordner die Hosts erzeugt werden sollen (Create hosts in) und welche Host-Attribute gesetzt werden sollen. Zwei Attribute sind dabei voreingestellt:

  1. Kein Monitoring per SNMP.

  2. Die Hosts haben keine IP-Adresse.

Nur wenn Sie die Checkbox bei Delete vanished hosts aktivieren, werden Hosts auch wieder entfernt, wenn Sie in Ihrer dynamischen Umgebung verschwunden sind. Möchten Sie nicht automatisch alle Hosts anlegen lassen, so können Sie das mit der Option Only add matching hosts mit einem regulären Ausdruck einschränken.

Durch Aktivieren der Checkbox bei Service discovery legen Sie fest, dass auf den automatisch erzeugten Hosts eine Service-Erkennung durchgeführt wird. Dies führt allerdings nur dann zum gewünschten Ergebnis, wenn der Spezialagent für OpenTelemetry eingerichtet ist.

Die beiden letzten Optionen Prevent host deletion after initialization und Validity of outdated data beeinflussen das Entfernen der automatisch erstellten Hosts. Diese Optionen wirken so, wie es bei der Piggyback-Verbindung beschrieben ist. Das Entfernen der automatisch erstellten Hosts wird in einem eigenen Kapitel detailliert erläutert.

3.4. Verbindung speichern

Nachdem Sie gespeichert haben, erscheint die Verbindung in der Verbindungsliste. Sie kann aber erst ausgeführt werden, wenn Sie die Änderungen aktiviert haben. Erst dadurch nimmt die Verbindung ihren Dienst auf.

Lassen Sie sich daher nicht von der Meldung irritieren, welche zunächst nach dem Speichern in der Status-Spalte erscheint:
Connection 'my_connection' isn’t found: consider activating changes

3.5. Verbindung aktivieren

Nach dem Speichern der Verbindungseigenschaften und einem Aktivieren der Änderungen nimmt die Verbindung automatisch ihren Betrieb auf. Das kann so schnell gehen, dass Sie bereits direkt nach dem Aktivieren der Änderungen sehen, wie Hosts im Monitoring angelegt wurden.

Wenn Sie diese Seite kurz darauf neu laden, sind diese Änderungen wahrscheinlich schon wieder verschwunden, weil sie ja von der dynamischen Host-Verwaltung automatisch aktiviert wurden. Die neuen Hosts sind dann bereits im Monitoring und werden regelmäßig überwacht.

3.6. Aktionen für eine Verbindung

Für jede Verbindung zeigt die Verbindungsliste in der Spalte Actions Symbole, um Aktionen auszuführen:

Tabelle der Verbindungen mit einem Eintrag.

Einige der folgenden Symbole werden nur für eine aktivierte Verbindung angezeigt:

Symbol Aktion

Symbol für das Bearbeiten.

Öffnet die Verbindung zum Bearbeiten.

Symbol für das Klonen.

Klont die Verbindung und öffnet sie zum Bearbeiten.

Symbol eines Hosts.

Zeigt eine Liste der zu dieser Verbindung gehörenden Hosts.

Symbol der Ausführungshistorie.

Zeigt die Ausführungshistorie der Verbindung.

Symbol für den Zustand der dynamischen Host-Verwaltung.

Zeigt den Zustand der dynamischen Host-Verwaltung, d.h. die aktuellen Bearbeitungszyklen.

Symbol für die Ausführung einer Verbindung der dynamischen Host-Verwaltung.

Führt die Verbindung aus, ohne auf den nächsten Bearbeitungszyklus zu warten.

Symbol für den Export der Verbindung.

Zeigt, wie die Verbindung mit der Checkmk REST-API erstellt werden kann.

Symbol für das Löschen.

Löscht die Verbindung nach Rückfrage.

4. Automatisch Hosts entfernen lassen

Wie oben erwähnt, können Sie Hosts, die es „nicht mehr gibt“, von der dynamischen Host-Verwaltung automatisch aus dem Monitoring entfernen lassen. Das klingt erst einmal sehr logisch. Was genau das „nicht mehr gibt“ allerdings bedeutet, ist auf den zweiten Blick doch etwas komplexer, da es verschiedene Fälle zu betrachten gibt.

Wir gehen in folgender Übersicht davon aus, dass Sie für die Verbindung die Option bei Delete vanished hosts aktiviert haben. Denn sonst werden grundsätzlich nie Hosts automatisch entfernt.

Situation Was geschieht?

Eine Verbindung wird entfernt.

Wenn Sie eine Verbindung stilllegen (mit do not activate this connection in den General properties) oder ganz entfernen, bleiben alle Hosts, die durch diese Verbindung erzeugt wurden, erhalten. Bei Bedarf müssen Sie diese von Hand entfernen.

Ein Piggyback-Host wird nicht mehr überwacht.

Wenn Sie einen Piggyback-Host, über den Sie Ihre Cloud- oder Containerumgebung überwachen, aus dem Monitoring entfernen, erzeugt dieser natürlich keine Piggyback-Daten mehr. In diesem Fall werden die automatisch erzeugten Piggybacked-Host standardmäßig nach einer Stunde automatisch entfernt. Den Zeitraum können Sie mit der Option Validity of missing data anpassen.

Ein Piggybacked-Host ist nicht erreichbar.

Wenn Ihre Cloud-Umgebung mal nicht erreichbar ist, und der Service Check_MK, der diese abfragt, auf CRIT geht, so bleiben die automatisch erzeugten Hosts auf unbestimmte Zeit im Monitoring. Hier gibt es keinen einstündigen Timeout!

Ein automatisch erstellter Host ist nicht mehr in den Daten enthalten.

Das ist quasi der Normalfall in einer Cloud-/Containerumgebung. In diesem Fall wird der Host standardmäßig nach einer Minute automatisch entfernt. Den Zeitraum können Sie mit der Option Validity of outdated data anpassen.

Der Checkmk-Server selbst ist gestoppt.

Ein Stoppen des ganzen Monitorings führt zwar dazu, dass Daten veralten, aber natürlich werden bestehende Hosts deswegen nicht entfernt. Das gleiche gilt, wenn der Checkmk-Server neu gebootet wird (wodurch vorübergehend alle Daten verloren gehen, da diese in der RAM-Disk liegen).

Beachten Sie, dass es mit der Regel Automatic host removal für alle Hosts die Möglichkeit gibt, diese automatisch entfernen zu lassen. Beide Optionen zum Lifecycle Management arbeiten unabhängig voneinander, d.h. ein Host wird entfernt, wenn eine der beiden Voraussetzungen erfüllt ist.

5. Konfiguration

Mit den Host-Manager-Einstellungen können Sie die Verarbeitungszyklen der dynamischen Host-Verwaltung anpassen. Sie erreichen den Dialog über Setup > Hosts > Dynamic host management > Host manager settings:

Dialog der Host-Manager-Einstellungen.

6. Diagnose

6.1. Ausführungshistorie

Wenn Sie dem DCD bei der Arbeit zusehen möchten, finden Sie in der Liste der Verbindungen bei jedem Eintrag das Symbol icon dcd history. Dieses führt Sie zur Ausführungshistorie:

Ausführungshistorie bei Suche und Anlegen neuer Hosts.

Sollte aus irgendwelchen Gründen die Erstellung eines Hosts fehlschlagen, sehen Sie dies in der Ausführungshistorie.

6.2. Log-Datei des DCD

Die Log-Datei des DCD ist ~/var/log/dcd.log. Hier ist ein Beispiel, welches zur vorherigen Abbildung passt:

~/var/log/dcd.log
2021-11-10 14:45:22,916 [20] [cmk.dcd] ---------------------------------------------------
2021-11-10 14:45:22,916 [20] [cmk.dcd] Dynamic Configuration Daemon (2.0.0p14) starting (Site: mysite, PID: 7450)...
2021-11-10 14:45:22,917 [20] [cmk.dcd.ConnectionManager] Initializing 0 connections
2021-11-10 14:45:22,918 [20] [cmk.dcd.ConnectionManager] Initialized all connections
2021-11-10 14:45:22,943 [20] [cmk.dcd.CommandManager] Starting up
2021-11-10 15:10:58,271 [20] [cmk.dcd.Manager] Reloading configuration
2021-11-10 15:10:58,272 [20] [cmk.dcd.ConnectionManager] Initializing 1 connections
2021-11-10 15:10:58,272 [20] [cmk.dcd.ConnectionManager] Initializing connection 'piggy01'
2021-11-10 15:10:58,272 [20] [cmk.dcd.ConnectionManager] Initialized all connections
2021-11-10 15:10:58,272 [20] [cmk.dcd.ConnectionManager] Starting new connections
2021-11-10 15:10:58,272 [20] [cmk.dcd.piggy01] Starting up
2021-11-10 15:10:58,273 [20] [cmk.dcd.ConnectionManager] Started all connections

7. Dateien und Verzeichnisse

Pfad Bedeutung

~/tmp/check_mk/piggyback

Hier entstehen Piggyback-Daten. Für jeden in den Piggyback-Daten enthaltenen Piggybacked-Host entsteht ein Verzeichnis.

~/tmp/check_mk/otel_collector

Hier entstehen OpenTelemetry-Daten. Für jeden OpenTelemetry-Host wird eine Datei erstellt.

~/var/log/dcd.log

Log-Datei des Dynamic Configuration Daemon (DCD).

Auf dieser Seite