Checkmk
to checkmk.com

1. Die Autoregistrierung

CEE Cloud-Systeme wie Amazon Web Services (AWS), Microsoft Azure oder Google Cloud Platform (GCP) erzeugen und löschen selbständig Objekte, die in Checkmk Hosts entsprechen. Damit diese Cloud-Objekte nach ihrer Entstehung ohne Verzögerung als Hosts ins Monitoring von Checkmk aufgenommen werden können, ist eine Lösung ohne manuelles Eingreifen gefragt.

Mit der Autoregistrierung gibt Checkmk die Antwort — und kann Hosts automatisch erstellen lassen. Da die automatische Host-Erstellung vor allem für die Cloud-Umgebungen benötigt wird, ist die Autoregistrierung nur in der CSE Checkmk Cloud Edition verfügbar.

Die Autoregistrierung erfolgt durch Kommunikation zwischen dem Checkmk-Agenten und dem Checkmk-Server. Der Agent Controller des Agenten stellt eine Anfrage zur Registrierung an den Agent Receiver des Servers und übermittelt dabei die zur Erstellung des Hosts notwendigen Daten. Wenn der Agent Receiver die Anfrage akzeptiert, wird die Registrierung durchgeführt und eine TLS-verschlüsselte Verbindung aufgebaut. Der Host wird erstellt, eine Service-Erkennung durchgeführt und die Änderungen aktiviert, so dass der Host in die Monitoring-Umgebung aufgenommen wird — alles vollautomatisch.

Damit dieser Automatismus funktioniert, ist natürlich eine entsprechende Vorbereitung notwendig. Los geht es mit der Checkmk-Instanz: mit der Erstellung eines Benutzers, der die Berechtigung zur Autoregistrierung besitzt, eines Ordners, in dem die Hosts erstellt werden sollen, und einer Regel, mit der der Agent Receiver Registrierungsanfragen ohne manuellen Eingriff abarbeiten kann. Bei der Konfiguration des Ordners können Sie übrigens festlegen, ob die Agenten der dort zu erstellenden Hosts im Pull-Modus oder im Push-Modus der Cloud Edition arbeiten sollen.

Dann folgt der Checkmk-Agent: Hier werden per Agentenregel die Informationen für eine Registrierungsanfrage festgelegt und dann mit der Agentenbäckerei in ein Agentenpaket verpackt. Dieses für die Autoregistrierung konfigurierte Agentenpaket wird abschließend auf den Hosts installiert, die eine Autoregistrierung durchführen können sollen.

Wie das alles genau abläuft, wird in den folgenden Kapiteln erklärt.

2. Autoregistrierung einrichten

2.1. Benutzer für die Autoregistrierung anlegen

Die Berechtigungen, die zur Registrierung und Erstellung von Hosts benötigt werden, sind in der Rolle Agent registration user enthalten. Dadurch können Sie gezielt einen Benutzer erstellen, der nichts anderes darf, als Hosts zu registrieren.

Starten Sie die Erstellung eines Automationsbenutzers mit Setup > Users > Users > Add user, so wie es im Artikel zur Benutzerverwaltung beschrieben ist. Geben Sie zuerst im Kasten Identity den Benutzernamen und den vollständigen Namen ein. Wichtig hier sind zwei Optionen im Kasten Security: Wählen Sie Automation secret for machine accounts und geben das Automationspasswort ein oder lassen Sie es auswürfeln. Weisen Sie dem Benutzer unter Roles ausschließlich die Rolle Agent registration user zu. Die Berechtigungen zur Registrierung neuer Hosts sind in dieser Rolle nur in der Cloud Edition verfügbar.

Dialog zur Erstellung eines neuen Benutzers mit der Rolle 'Agent registration user'.
Mit Automationspasswort und Rolle wird der neue Benutzer für die Autoregistrierung erstellt

Durch Festlegung der genannten Optionen stellen Sie sicher, dass der neue Benutzer nur für die Autoregistrierung verwendet werden kann. Sichern Sie Ihre Eingaben mit Save.

2.2. Ordner für die neuen Hosts einrichten

Die automatisch erstellten Hosts sollen in einem neuen Ordner angelegt werden. Sie können alternativ auch einen bestehenden Ordner verwenden, wenn Sie ihn so konfigurieren, wie es im Folgenden beschrieben ist.

Starten Sie die Erstellung eines Ordners mit Setup > Hosts > Hosts > Add folder. Geben Sie dem Ordner im Kasten Basic settings einen Namen.

Im Kasten Network address geht es um die Option IP address family. Sollen die Checkmk-Agenten der zu erstellenden Hosts den Pull-Modus verwenden, können Sie den Standardwert IPv4 only unverändert lassen. Für den Push-Modus wählen Sie den Wert No IP aus. Damit verhindern Sie, dass die Erreichbarkeit des Hosts per Smart Ping überprüft wird.

Im folgenden Kasten Monitoring agents setzen Sie zwei wichtige Optionen für die Autoregistrierung. Mit Checkmk agent connection mode entscheiden Sie, ob der Checkmk-Agent im Pull-Modus oder (wie im folgenden Bild) im Push-Modus arbeiten soll. Diese Option gibt es nur in der Cloud Edition. Aktivieren Sie schließlich bei Bake agent packages die Checkbox Bake a generic agent package for this folder. Damit nutzen Sie die Möglichkeit der Agentenbäckerei, eine Agentenkonfiguration für einen Ordner und alle darin enthaltenen und hinzukommenden Hosts zu erstellen.

Dialog zur Erstellung eines neuen Ordners für die Autoregistrierung.
Die Konfiguration eines Ordners für den Push-Modus

Schließen Sie auch die Erstellung des Ordners mit Save ab.

2.3. Regel für die Checkmk-Instanz erstellen

Die Entscheidung darüber, welche Hosts sich automatisch registrieren dürfen, welche Namen sie erhalten und was sonst noch nach der Registrierung mit ihnen geschieht, wird in Checkmk — wenig überraschend — mit Regeln getroffen. Dabei spielen die Labels, mit denen sich der Agent des Hosts bei der Registrierung meldet, eine entscheidende Rolle. Doch der Reihe nach.

Den Regelsatz Agent registration gibt es nur in der Cloud Edition. Sie finden ihn unter Setup > Agents (sofern der Show-more-Modus aktiv ist) oder über die Suche im Setup-Menü. Starten mit Add rule die Erstellung einer neuen Regel und vergeben Sie im ersten Kasten Properties, wie bei Checkmk gewohnt, zuerst eine ID und einen Titel.

Im folgenden Kasten Matching criteria bestimmen Sie, welche Labels akzeptiert werden, wenn der Checkmk-Server eine Anfrage zur Registrierung von einem Agenten erhält. Diese Agenten-Labels werden ausschließlich für die Autoregistrierung verwendet und sind andere als die Labels, die sonst in Checkmk zur Kennzeichnung von Hosts und Services verwendet werden. Zwei Agenten-Labels werden vom Checkmk-Agenten geliefert und können in der Liste ausgewählt werden: cmk/hostname-simple enthält den Host-Namen ohne Domain-Anteil (daher simple) und ist für die Bestimmung eines eindeutigen Host-Namens in Checkmk gedacht. cmk/os-family liefert das Betriebssystem des Hosts und kann z.B. für die Ablage der Hosts in unterschiedlichen Ordnern verwendet werden. Sie können mit Custom label aber auch Ihre eigenen Labels eintragen.

Dabei wird das durch Doppelpunkt getrennte Schlüssel-Wert-Paar, aus dem sich ein Label zusammensetzt (z.B. cmk/os-family:linux) separat ausgewertet. So können Sie gezielt festlegen, dass ein Schlüssel (z.B. cmk/os-family) vorhanden sein muss (Exists), nicht vorhanden sein darf (Does not exist) oder nur mit einem vorgegebenen Wert (Equals) akzeptiert wird. Als Wert können Sie auch einen regulären Ausdruck (Regex) eingeben. Wenn Sie mehrere Agenten-Labels festlegen, werden diese logisch mit UND verknüpft. Im folgenden Beispiel soll neben dem vordefinierten Label cmk/hostname-simple auch noch das benutzerdefinierte Label my_autoregister_label geprüft werden:

Regel zur Autoregistrierung mit Festlegung der zulässigen Labels.
Hier wird überprüft, ob die Label mit den Schlüsseln cmk/hostname-simple und my_autoregister_label existieren

Hinweis: Jeder Host, der erfolgreich automatisch registriert wurde, erhält von Checkmk das Host-Label cmk/agent_auto_registered:yes angehängt. Dieses Label können Sie aber hier nicht verwenden, da es kein Agenten-Label ist und erst nach der Registrierung vergeben wird.

Im nächsten Kasten Action bestimmen Sie, was passieren soll, wenn die Auswertung der Labels greift: Den Host erstellen oder eben nicht. Bei Auswahl von Stop and do not create hosts ist die Regelauswertung abgeschlossen und die beiden folgenden Kästen werden nicht mehr betrachtet. In unserem Beispiel sollen aber Hosts erstellt werden:

Regel zur Autoregistrierung mit Festlegung der durchzuführenden Aktion.
Die Standardaktion ist die Erstellung der Hosts

Im Kasten Hostname computation legen Sie nun fest, welchen Namen der Host erhalten soll. Im Feld Hostname template geben Sie die Vorlage ein. Hier können Sie per Makro auf die Werte derjenigen Agenten-Labels zugreifen, die Sie im obigen Kasten Matching criteria ausgewählt haben, z. B. mit $cmk/hostname-simple$ auf den vom Checkmk-Agenten gelieferten einfachen Host-Namen. Die Vorlage können Sie dann, wenn gewünscht, verändern durch Umwandlung in Klein- oder Großbuchstaben sowie Ersetzungen mit regulären Ausdrücken und mit expliziten Host-Namen. Dies sind übrigens die gleichen Optionen, die es bei der Anpassung der Namen von Piggyback Hosts gibt. Mehr Informationen finden Sie auch in der Inline-Hilfe.

Regel zur Autoregistrierung mit Festlegung des Host-Namens.
Übernahme des einfachen Host-Namens, ergänzt um den Prefix push-

Zum Schluss wählen Sie dann noch im Kasten Host creation den vorbereiteten Ordner aus, in dem die neuen Hosts landen sollen. Zusätzlich können Sie noch Attribute bestimmen, die dem Host mitgegeben werden sollen. Mehr zu diesen Attributen erfahren Sie im Artikel zur Verwaltung der Hosts.

Regel zur Autoregistrierung mit Festlegung des Zielordners und der Host-Attribute.
Die neuen Hosts sollen im vorbereiteten Ordner Autoregistered erstellt werden

Nach dem Sichern der Regel, kehren Sie zur Seite Agent registration zurück. Hier finden Sie den Agent labels simulator. Wenn Sie viele Regeln definiert haben, hilft Ihnen der Simulator dabei, den Überblick zu behalten. Sie können Agenten-Labels eingeben und mit Try out simulieren, ob und welche Regel bei der Übermittlung eines Agenten-Labels greift. Im Ergebnis sehen Sie dann die farbigen Ampelsymbole, die im Artikel zu den Regeln beschrieben sind.

2.4. Regel für die Agentenbäckerei erstellen

Nachdem im vorherigen Abschnitt die Checkmk-Instanz konfiguriert wurde, geht es jetzt um den Agent Controller des Checkmk-Agenten. Hierfür nutzen Sie den Agent controller auto-registration (Cloud Edition) Regelsatz der Agentenbäckerei, der, wie sein Titel schon vermuten lässt, nur in der Cloud Edition vorhanden ist. Sie finden den Regelsatz in der Agentenbäckerei unter Agent rules oder am schnellsten über die Suche im Setup-Menü. Erstellen Sie eine neue Regel.

In Kasten Agent controller auto-registration geben Sie dem Agent Controller alle Informationen mit, die dieser für eine Registrierungsanfrage beim Agent Receiver benötigt: den Checkmk-Server (Monitoring server address), gegebenenfalls mit der Portnummer des Agent Receivers (Agent receiver port), die Checkmk-Instanz (Site to register with) und den vorbereiteten Automationsbenutzer für die Autoregistrierung.

Sie können auch hier mit Additional agent labels to send during registration eigene Labels definieren. Damit die Autoregistrierung funktioniert, müssen diese Labels zu denen passen, die Sie in der Regel für die Checkmk-Instanz als Custom label eingetragen haben: im Beispiel also das zuvor gesetzte benutzerdefinierte Label mit dem Schlüssel my_autoregister_label.

Mit der letzten Option Keep existing connections bestimmen Sie, ob der Agent Controller bereits existierende Verbindungen löschen (no) oder behalten soll (yes). Wenn Sie neben der automatischen Registrierung einer Verbindung auch manuelle Verbindungen zu anderen Checkmk-Instanzen konfiguriert haben, und diese auch nach einem Neustart des Agent Controllers cmk-agent-ctl behalten wollen, sollten Sie diese Option auf yes setzen.

Regel zur Autoregistrierung für die Agentenbäckerei.
Die Werte für die Agentenbäckerei müssen zu denen der Checkmk-Instanz passen

Wichtig: Im letzten Kasten Conditions dieser Regel wählen Sie als Folder erneut den vorbereiteten Ordner aus.

2.5. Agentenpaket backen

Nun geht es weiter in der Agentenbäckerei mit Setup > Agents > Windows, Linux, Solaris, AIX. Klicken Sie auf Symbol zum Backen der Agenten. und backen Sie sich einen neuen Agenten. Als Ergebnis erhalten Sie zusätzlich zur Agentenkonfiguration Vanilla (factory settings) eine neue Zeile für die Konfiguration, in der die Regel eingebacken ist, die im vorherigen Abschnitt erstellt wurde:

Liste mit der neuen Konfiguration der Agenten für die Autoregistrierung.
Die Spalte Agent type zeigt, dass die neue Konfiguration spezifisch für den konfigurierten Ordner ist

2.6. Agentenpaket herunterladen und installieren

Das Agentenpaket muss nun auf jedem Host installiert werden, der eine Autoregistrierung starten soll. Laden Sie das für das Betriebssystem des Hosts passende Agentenpaket herunter und installieren Sie es auf dem Host. Das Vorgehen ist genauso, wie in der Agentenbäckerei üblich. Mehr dazu finden Sie in den Artikeln zu den Monitoring-Agenten, dem Linux-Agenten und dem Windows-Agenten.

2.7. Erfolgskontrolle

Nach der Installation des Agentenpakets wertet der Agent Controller die Datei /var/lib/cmk-agent/pre_configured_connections.json aus und setzt für eine darin enthaltene Verbindung den Befehl zur Registrierung ab. Wenn der Agent Receiver akzeptiert, wird die Verbindung eingerichtet und der Host in der Checkmk-Instanz erstellt.

Inhalt des Ordners für die Autoregistrierung mit dem automatisch erstellten Host.
Der automatisch erstellte Host im Setup

Anschließend wird die Service-Erkennung durchgeführt und die Änderungen aktiviert, damit der Host auch im Monitoring sichtbar ist. Beachten Sie, dass bei der automatischen Aktivierung alle anderen gesammelten Änderungen — auch von anderen Benutzern — mit aktiviert werden.

Es kann insgesamt einige (bis zu 5) Minuten dauern von der Installation des Agentenpakets bis zum Erscheinen des Hosts im Monitoring. Die einzelnen Schritte können Sie in Setup > General > Audit log nachverfolgen.

Auf dem Host können Sie sich den Verbindungsstatus des Agent Controllers per Kommando ausgeben lassen, der nach einer erfolgreichen Registrierung im Push-Modus etwa so aussieht:

root@linux# cmk-agent-ctl status
Version: 2.2.0-2023.03.21
Agent socket: operational
IP allowlist: any


Connection: myhost/mysite
	UUID: b11af975-40a8-4574-b6cd-12dc11c6f273
	Local:
		Connection mode: push-agent
		Connecting to receiver port: 8000
		Certificate issuer: Site 'mysite' agent signing CA
		Certificate validity: Tue, 21 Mar 2023 12:29:41 +0000 - Tue, 21 Mar 2028 12:29:41 +0000
	Remote:
		Connection mode: push-agent
		Registration state: discoverable
		Host name: push-myhost

Automatisch erstellte Hosts können Sie auch wieder automatisch entfernen lassen. Damit bietet die Cloud Edition die beiden wichtigsten Komponenten für das Lifecycle Management von Hosts. Übrigens funktioniert die automatische Entfernung auch für manuell erstellte Hosts — und das in allen Editionen.

3. Test und Fehlerdiagnose

Die einzelnen Schritte für die Erstellung des Hosts im Monitoring (Erstellung des Hosts im Setup, Service-Erkennung und Aktivierung) können Sie in der Checkmk-Instanz unter Setup > General > Audit log nachverfolgen. Die erfolgreiche automatische Registrierung überprüfen Sie auf dem Host mit dem Befehl cmk-agent-ctl status.

Diese im vorherigen Abschnitt genannten Prüfungen zur Erfolgskontrolle zeigen allerdings nur im Erfolgsfall die gewünschten Ergebnisse. Wenn Sie dort nicht das sehen, was oben gezeigt ist, kann dies daran liegen, dass eine Registrierungsanfrage vom Agent Controller zwar abgesetzt, aber vom Agent Receiver nicht akzeptiert wurde.

Eine Übersicht über alle Registrierungsanfragen, die von der Checkmk-Instanz abgelehnt wurden, erhalten Sie auf der Seite Agent registration, auf der Sie weiter oben die Regel für die Checkmk-Instanz erstellt haben. Eine Ablehnung kann allerlei Gründe haben. Im folgenden Bild sehen Sie zwei davon: ein Schreibfehler (my_autoregister_labell) im vom Agenten übermittelten Agenten-Label und einen Host, der bereits existiert:

Liste der abgelehnten Anfragen zur Autoregistrierung.
Zwei abgelehnte Registrierungsanfragen

Für jede abgelehnte Anfrage können Sie in der ersten Spalte Actions eine Simulation starten, deren Ergebnis in der letzten Spalte Simulation result angezeigt wird.

Für eine darüber hinausgehende Fehlerdiagnose finden Sie in den Artikeln zum Linux-Agenten und zum Windows-Agenten weitere Informationen — unter anderem zu den Themen Kommunikation zwischen Agent und Checkmk-Instanz sowie zur (manuellen) Registrierung.

4. Dateien und Verzeichnisse

4.1. Pfade auf dem überwachten Linux-Host

Pfad Bedeutung

/var/lib/cmk-agent/registered_connections.json

Enthält eine Liste der mit dem Agent Controller registrierten Verbindungen.

/var/lib/cmk-agent/pre_configured_connections.json

Enthält eine vorkonfigurierte und per Agentenbäckerei in das Agentenpaket integrierte Verbindung zu einer Instanz für die Autoregistrierung in der Cloud Edition.

4.2. Pfade auf dem überwachten Windows-Host

Pfad Bedeutung

C:\ProgramData\checkmk\agent\registered_connections.json

Enthält eine Liste der mit dem Agent Controller registrierten Verbindungen.

C:\ProgramData\checkmk\agent\pre_configured_connections.json

Enthält eine vorkonfigurierte und per Agentenbäckerei in das Agentenpaket integrierte Verbindung zu einer Instanz für die Autoregistrierung in der Cloud Edition.

4.3. Pfade auf dem Checkmk-Server

Pfad Bedeutung

~/var/agent-receiver/received-outputs/

Enthält für jede Verbindung deren UUID als Softlink, der auf den Ordner mit der Agentenausgabe zeigt.

~/var/log/agent-registration.log

Log-Datei für die Agentenregistrierung. Sie können die Ausführlichkeit der Meldungen in 6 Stufen steuern über Setup > General > Global settings > User interface > Logging > Agent registration.

~/var/log/agent-receiver/

Enthält die Log-Dateien des Agent Receivers.

Auf dieser Seite