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.4.0pXX/check-mk-raw-2.4.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.4.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.4.0pXX.cre/share/check_mk/agents/check-mk-agent_2.4.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.

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.

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.
Monitoring-Benutzer in Checkmk anlegen

In Checkmk ist standardmäßig bereits eine Benachrichtigungsregel aktiv: Diese sehen Sie nach der Auswahl von Setup > Events > Notifications auf der Seite Notifications im Abschnitt Global notification rules. Mit dieser Regel 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 zum Beispiel ein Service auf WARN, CRIT oder OK wechselt. Durch das Klicken auf das Bleistift-Symbol können Sie die Standardregel bearbeiten, z. B. um das Absenderfeld der generierten E-Mails anzupassen.

Global notification rules in Checkmk

Testen von Benachrichtigungen: Sie können prüfen, ob Benachrichtigungen erfolgreich versendet werden. Klicken Sie dazu auf der Seite Notifications auf Test notifications, wählen Sie einen Host und den zugehörigen Service aus und setzen Sie das Häkchen bei Trigger notifications. Wenige Sekunden später erhalten Sie die Resultate des Tests und finden eine Testbenachrichtigung auch in Ihrem Postfach.

'Test notifications'-Menü in Checkmk

Feintuning des Monitorings

Sicherzustellen, dass der SSL-Handshake (oder die Zeit bis zum Senden einer Webseite) unter einem bestimmten Schwellenwert bleibt, bedeutet bereits grundlegendes Monitoring der Performance einer Website oder des Backends einer App. Um dies zu erreichen, können bei beiden Prüfungen Grenzwerte für tolerierbare Antwortzeiten festgelegt werden. In der Regel sollten Sie für WARN Werte zwischen 50 und 250 ms und für CRIT Werte zwischen 200 und 1000 ms wählen, je nachdem, ob ein Benutzer direkt mit dem Server interagiert. Allerdings führen zu niedrige Werte wahrscheinlich dazu, dass Sie Dutzende von Benachrichtigungs-E-Mails pro Tag erhalten, wenn die Antwortzeit geringfügig über dem Schwellenwert liegt und eine Minute später wieder in Ordnung ist.

Für den Fall, dass Sie nur benachrichtigt werden möchten, wenn der Check länger als ein paar Minuten fehlerhaft ist, verfügt Checkmk über das Konzept der Soft- und Hard States: Wenn ein Check fehlschlägt, ändert sich der zugehörige Zustand, der in der GUI angezeigt wird, sofort. Wenn Sie jedoch die Regel Maximum number of check attempts for service für Ihre Zertifikatschecks verwenden und diese auf drei setzen, werden Benachrichtigungen nur gesendet, wenn drei aufeinanderfolgende Check-Versuche fehlschlagen. Wenn nur einer oder zwei fehlschlagen, ändert sich der Soft State zu einem nicht OK-Wert, aber der Hard State bleibt OK. Auf diese Weise können Sie einen reibungslosen Betrieb über den Tag hinweg gewährleisten und dennoch einige Spitzen tolerieren, bei denen die Antworten langsamer sind.

Der Blick auf check_httpv2 lohnt

Der Zertifikats-Check, den wir als Hauptthema dieses Artikels vorgestellt haben, führt nur den grundlegenden SSL-Handshake durch und nichts weiter. Aus diesem Grund möchten Sie vielleicht den aktiven Check Check HTTP web service ausprobieren. Dieser Check kann eine ganze Reihe von HTTP-bezogenen Parametern wie Response Code, Inhalt, Weiterleitungen und Antwortzeiten untersuchen. Er kann auch eine grundlegende Zertifikatsprüfung durchführen, sodass sie in einfacheren Fällen die reine Zertifikatsprüfung ersetzen kann. In komplexeren Fällen, wie beispielsweise der Überprüfung einer Liste von Certificate Subject Alternative Names oder der Überprüfung eines anderen Protokolls als HTTPS, bleibt der Zertifikatscheck die Überprüfung der Wahl.

Zertifikate mit alternativen Hostnamen

Ein modernes Handling von SSL-Zertifikaten kann eine ziemliche Herausforderung sein: Zu Beginn des SSL-Handshakes teilt der Client dem Server mit, mit welchem virtuellen Host er sich verbinden möchte (Server Name Indication). Auf diese Weise kann der Server das passende Zertifikat auswählen. Wenn das Zertifikat dem Client vorgelegt wird, kann dieser alle Hostnamen, für die ein Zertifikat zugelassen ist, durch Lesen der Liste der Certificate Subject Alternative Names ermitteln. In der Regel ist diese Liste auf 100 Einträge begrenzt. Um eine vollständige Abdeckung aller Zertifikate zu erreichen, müssen Sie für jedes zu überwachende Zertifikat einen individuellen Endpunkt angeben. Fügen Sie jeden alternativen Namen des Zertifikats über den Button Add new entry hinzu.

Und die Zukunft von Zertifikaten?

Certificate Revocatian Lists funktionieren nicht besonders gut, daher hat das Browser Forum, ein Konsortium aller großen Browseranbieter, im April beschlossen, die maximale Gültigkeitsdauer von Zertifikaten, die von Browsern akzeptiert werden, bis zum 15. März 2029 von derzeit 398 Tagen auf 47 Tage zu verkürzen. Ab 15. März 2025 beträgt die maximale Gültigkeitsdauer 100 Tage, was ziemlich nah an den derzeitigen 90 Tagen liegt, die Let's Encrypt standardmäßig verwendet. In der Zwischenzeit verkürzt Let's Encrypt die Gültigkeitsdauer noch weiter und wird voraussichtlich Ende 2025 oder Anfang 2026 auf Wunsch auch Zertifikate mit einer Gültigkeitsdauer von sechs Tagen ausstellen. Nutzen Sie die verbleibende Zeit, um zunächst die Überwachung einzurichten und dann Ihre ACME-Automatisierung für die Erneuerung ohne menschliches Zutun zu optimieren.