Ist eine vollwertige Monitoring-Lösung wie Checkmk überdimensioniert, nur um “Let’s Encrypt”-Zertifikate zu monitoren? Keineswegs! Denn Checkmk ist schnell per Paket-Installation eingerichtet, hat moderate Hardwareanforderungen und ist mit wenigen Handgriffen bedarfsgerecht erweiterbar. Gerade Letzteres ist vorteilhaft, wenn einfache „Uptime-only“-Dashboards nicht mehr ausreichen. In diesem Fall werden Sie froh sein, eine Lösung zu haben, mit der Sie gezielt einzelne Hosts agentenbasiert überwachen können – ohne die Monitoring-Lösung wechseln zu müssen.

Checkmk lässt sich nebenbei auf einem NAS mit mindestens 4 GB RAM, in einer virtuellen Maschine (auch wenn diese nicht 24/7 läuft) oder auf einem virtuellen bzw. physischen Server betreiben. Für unser Beispiel verwenden wir eine kleine Hetzner-Cloud-Maschine – ausgestattet mit 4 GB RAM und zwei Intel-Prozessoren. Diese wird in Helsinki gehostet, wo Energie günstiger ist, sodass mich die Maschine nur 4 € pro Monat kostet.

Achten Sie darauf, einen Server mit einer Intel- oder AMD-CPU (x86/64) zu wählen, da Checkmk derzeit keine Installationspakete für ARM anbietet. Falls der Checkmk-Server nicht durchgehend läuft (z. B. auf einem Linux-Desktop), werden Sie beim Start des Servers über Statusänderungen informiert – Checkmk speichert den letzten bekannten Status beim Herunterfahren. 

Welche Checkmk-Edition sollte ich wählen?

Für kleinere Installationen bietet Checkmk zwei Editionen:

  • Checkmk Raw ist zu 100 % Open Source. Sie können damit eine unbegrenzte Anzahl von Diensten kostenlos überwachen. Einschränkungen ergeben sich nur durch die Leistungsfähigkeit der Hardware und das Geschick des Administrators, alles richtig zu konfigurieren. 
  • Checkmk Cloud ist eine kommerzielle Edition, die Sie 30 Tage lang ohne Einschränkungen kostenlos testen können. Danach ist die Nutzung weiterhin kostenlos, solange Sie weniger als 750 Dienste überwachen. 

Da Checkmk Cloud den leistungsfähigeren Monitoring-Core (Checkmk Micro Core) und eine komfortablere Einrichtung von Benachrichtigungen bietet, empfehlen wir diese Edition. Falls Sie ein überzeugter Open-Source-Anhänger sind, nutzen Sie Checkmk Raw – beachten Sie jedoch, dass die Einrichtung der Mail-Weiterleitung etwas aufwendiger ist. Falls Sie im Nachhinein doch mehr Funktionen oder Performance benötigen, ist ein Wechsel auf Checkmk Cloud mit geringem Aufwand möglich.

Schnelle Installation

Rufen Sie die Download-Seite auf, wählen Sie die Edition und die Linux-Distribution aus, um den wget-Befehl für den Download zu generieren:

wget https://download.checkmk.com/checkmk/2.3.0pXX/check-mk-raw-2.3.0pXX_0.distri_amd64.deb

Da die Installation einige Abhängigkeiten benötigt, stellen Sie sicher, dass der Paketcache aktuell ist:

apt update
apt install ./check-mk-raw-2.3.0pXX_0.distri_amd64.deb

Das führende ./ ist notwendig, damit apt erkennt, dass es sich um eine lokale Datei handelt. Andernfalls würde apt das Argument als Paketnamen interpretieren und in der Paketliste suchen.

Sites machen den Unterschied

Nach der Installation des Pakets ist Checkmk noch nicht einsatzbereit. Warum? Checkmk verwendet das Konzept der „Sites“ (unabhängige Instanzen). Dieses ermöglicht den parallelen Betrieb mehrerer Checkmk-Systeme auf einem Host – z. B. für Produktions- und Testumgebungen. Ein weiterer Vorteil: Falls eine Site beschädigt oder fehlerhaft konfiguriert wird, kann sie einfach gelöscht und neu erstellt werden, ohne den gesamten Server zu beeinträchtigen.

Site erstellen:

omd create my1stcheckmk

Zum Site-Benutzer wechseln:

omd su my1stcheckmk

Passwort für den Admin-Account setzen:

cmk-passwd cmkadmin

Site starten:

omd start

Checkmk läuft jetzt und Sie können wieder zum Root-Benutzer wechseln:

exit

Checkmk-Server überwachen

Um die Gesundheit des Checkmk-Servers selbst zu monitoren, empfehlen wir die Installation eines Monitoring-Agenten. Checkmk liefert Agentenpakete für die meisten Linux-Distributionen mit. Diese können Sie entweder über das Webinterface herunterladen oder direkt aus dem Dateisystem installieren.

find /opt/omd/ -name '*agent*.deb'

Stellen Sie für die Installation sicher, dass Sie als Root angemeldet sind:

apt install /opt/omd/versions/2.3.0pXX.cre/share/check_mk/agents/check-mk-agent_2.3.0pXX-1_all.deb

Erstellen des ersten Ordners und Hosts

Gehen Sie zur Checkmk-Weboberfläche:

http://hostname/sitename

Melden Sie sich als cmkadmin mit dem von Ihnen erstellten Passwort an. Gehen Sie zu Setup > Hosts und erstellen Sie einen ersten Ordner, der den Checkmk-Server selbst enthält. Ich habe infrastructure als Ordnernamen verwendet. Erstellen Sie in diesem Ordner einen Host namens localhost, der die Standardwerte verwendet. Klicken Sie anschließend auf Save & run service discovery.

Tipp: In Checkmk können Sie per Help > Show inline help detaillierte Informationen zu den verfügbaren Optionen für jede Einstellung aufrufen.

Add folder menu in Checkmk
Add host menu in Checkmk

In der automatischen Service-Erkennung (Service Discovery) müssen Sie in der Regel zweimal auf Accept all klicken, um die gefundenen Services zu bestätigen. Klicken Sie nun auf das gelbe Achteck im Dashboard (oben rechts). Es zeigt an, dass einige Änderungen nicht aktiviert sind. Denn Checkmk aktiviert Änderungen beim Speichern nicht automatisch. Dies ermöglicht es Administratoren, Änderungen zu aktivieren, die in gewisser Weise voneinander abhängig sind.

Auto-discovery of the services of the local host

Nach der Service-Erkennung hat der Dienst Check_MK Agent (ja, hier wird die alte Schreibweise verwendet) den Status WARN. Der Grund: Checkmk-Agent und Server kommunizieren zunächst unverschlüsselt. Wechseln Sie daher ein letztes Mal in eine Root-Shell, um mTLS zu aktivieren, indem Sie den Agenten auf der Site registrieren:

cmk-agent-ctl register --hostname localhost --server localhost --site my1stcheckmk --user cmkadmin

Attempting to register at localhost, port 8000. Server certificate details:

PEM-encoded certificate:
-----BEGIN CERTIFICATE-----
MIIFSDCCAzCgAwIBAgIUHG9nA6WWO8J6TySCuhF4LBWTCQEwDQYJKoZIhvcNAQEN
q5oZixF2aR7DVvTKz6W8d72wlaOmNTzmlxmBBeWc9keMCCuUD9jNPBKQ8oJg0R2v
1b9kYDypqoukSYZV
-----END CERTIFICATE-----

Issued by:
	Site 'my1stcheckmk' local CA
Issued to:
	my1stcheckmk
Validity:
	From Fri, 14 Feb 2025 16:35:36 +0000
	To   Wed, 14 Feb 2035 16:35:36 +0000

Do you want to establish this connection? [Y/n]
> y

Nach der Bestätigung dauert es etwa eine Minute, bis der Status von Check_MK Agent von WARN auf OK wechselt.

Ein Ordner für die Zertifikatsüberwachung

Checkmk verwendet einen regelbasierten Ansatz, der die Konfiguration des Monitorings flexibel und effizient gestaltet. Regeln können auf Kriterien wie Ordner, Bezeichnungen Objektnamen angewendet werden. Für die Zertifikatsüberwachung erstellen Sie einen neuen Ordner letsencrypt, in dem später alle Hosts mit zu überwachenden Zertifikaten abgelegt werden. 

Wählen Sie No API integrations, no Checkmk agent, da ausschließlich aktive Checks genutzt werden sollen. Warum? Aktive Checks überprüfen direkt den jeweiligen Service, sie werten nicht die Agenten-Ausgabe aus. Das Monitoring der Hosts im letsencrypt-Ordner erfordert daher keine Agenteninstallation. 

Add folder menu for all hosts that correspond to certificates

Als nächstes fügen Sie die zu überwachenden Hosts dem letsencrypt-Ordner hinzu. Gehen Sie zu Setup > Hosts, öffnen Sie dort den neuen Ordner letsencrypt und klicken Sie auf den Menüpunkt Hosts. Dann Import hosts via CSV file auswählen. Anschließend laden Sie entweder eine CSV-Datei hoch oder kopieren den Inhalt einer CSV-Datei in das Texteingabefeld.

Falls Sie nur wenige Hosts monitoren möchten, können Sie die Hostnamen auch einfach direkt in das Feld eingeben (einer pro Zeile). Benennen Sie die Spalte, indem Sie hostname in die erste Zeile eingeben:

hostname
docs.checkmk.com
checkmk.com
download.checkmk.com
play.checkmk.com
trust.checkmk.com
Menu in Checkmk for Bulk host import

Die CSV-Datei kann weitere Spalten enthalten. Im offiziellen Checkmk Handbuch finden Sie weitere  Details. 

Überprüfen Sie alles und importieren Sie dann die Hosts. Klicken Sie zur Übernahme der Änderung auf Activate changes. Ein Klick auf das Checkmk-Logo bringt Sie zurück zum Haupt-Dashboard, das jetzt die Gesamtzahl der Hosts anzeigt. Wenn Sie auf einen der neuen Hosts klicken, werden Sie feststellen, dass dieser noch keinen Service hat.

Mit Regeln die Konfiguration vereinfachen

Öffnen Sie das Setup-Menü und geben Sie im Suchfeld Certificate ein. Unter dem Menüpunkt HTTP, TCP und E-Mail erscheint Check Certificates. Klicken Sie auf diese Option, um Regeln zu bearbeiten oder hinzuzufügen.

Searching cert check in Checkmk menu

Sie können nun eine neue Regel für Zertifikatsprüfungen hinzufügen. Folgen Sie den Vorschlägen aus dem folgenden Screenshot bezüglich Präfix, Name und Endpunkt. Wir erstellen eine Warnung, wenn die Restlaufzeit 22 Tage beträgt. Wenn Sie versuchen, täglich zu erneuern, können Sie stattdessen 28 Tage verwenden. Ganz wichtig bei Conditions: Wenden Sie die Regel ohne weitere Einschränkung auf den letsencrypt-Ordner an. Dadurch wird sie automatisch mit den Parametern für jeden einzelnen Host in diesem Ordner verknüpft.

Configureation of the rule for check certificates

Aktivieren Sie die Änderungen und warten Sie, bis Checkmk alle Hosts zum ersten Mal überprüft hat: Mission erfüllt! Ein kurzer Blick auf das Dashboard zeigt, ob es ein Problem bei der Erneuerung der Zertifikate gab.

Kein Monitoring ohne Benachrichtigungen

Ein Dashboard manuell zu prüfen ist ineffizient – Benachrichtigungen und Warnmeldungen sind deutlich praktischer, etwa per E-Mail. Checkmk Raw verlässt sich vollständig auf den MTA (Mail Transfer Agent) des Systems, so dass Sie einen eigenen Mailserver konfigurieren müssen (z. B. mit einem Relay-Only-Nullmailer). Checkmk Cloud bietet zusätzlich die Möglichkeit einer synchrone Zustellung für HTML-E-Mails. Diese Methode sendet direkt an einen Smarthost, ist einfacher zu konfigurieren und ermöglicht eine bessere Fehlererkennung bei fehlgeschlagenen E-Mails.

Empfohlene Schritte:

  1. Einen normalen Monitoring-Benutzer mit Name, Username und E-Mail-Adresse anlegen, um Administrations- von Monitoringaufgaben zu trennen.
  2. Benutzer der Kontaktgruppe Everything zuweisen.
  3. Wenn Ihre Monitoring-Umgebung wächst, ersetzen Sie die Kontaktgruppe Everything durch spezifische Kontaktgruppen für verschiedene Projekte.
Adding a user in Checkmk

In Checkmk ist bereits eine Standardregel aktiv: Darüber werden alle Kontakte über Host/Service-Statusänderungen informiert. Sobald ein neuer Benutzer der Gruppe Everything hinzugefügt wird, erhält er automatisch Benachrichtigungen, wenn ein Service auf WARN oder CRIT wechselt. Durch das Klicken auf das Bleistift-Symbol können Sie die Standardregel bearbeiten, z. B. um das Absenderfeld der generierten E-Mails anzupassen.

Testen von Benachrichtigungen: Über Setup > Events > Notifications können Sie prüfen, ob Benachrichtigungen erfolgreich versendet werden. Klicken Sie dazu auf den Button Test notifications, wählen Sie einen Host und die zugehörigen Services aus und setzen Sie das Häkchen bei HTML/ASCII. Wenige Sekunden später erhalten Sie ein Protokoll mit den Empfängern der E-Mail. Selbstverständlich finden Sie eine Testbenachrichtigung auch in Ihrem Postfach. 

Test notifications menu in Checkmk

Wie geht's weiter?

Neben der Zertifikatsprüfung, die Sie gerade konfiguriert haben, sollten Sie sich den Check HTTP Web Service ansehen. Damit können Sie beispielsweise Status-Codes, Inhalte, Weiterleitungen und Antwortzeiten überwachen. Zusätzlich lassen sich damit auch grundlegende Zertifikatsprüfungen durchführen, sodass in einfachen Fällen kein separater Zertifikats-Check erforderlich ist. Bei komplexeren Anforderungen – etwa der Prüfung einer Liste von SNI (Server Name Indication) oder der Überwachung anderer Protokolle als HTTPS – ist jedoch der dedizierte Zertifikats-Check die bessere Wahl.

Wenn Sie darüber hinaus Festplattenspeicher, Hardwarezustand, Datenbankleistung und weitere wichtige Parameter Ihrer IT-Umgebung im Blick behalten möchten, lohnt sich die Installation des Checkmk-Agenten auf weiteren Hosts. Insbesondere, da bereits die Standardkonfiguration wertvolle Einblicke in Systemlast und Speicherauslastung liefert.