Es ist immer hilfreich, zu wissen, was im eigenen Netzwerk los ist – blöd ist nämlich, wenn irgendwas nicht mehr funktioniert und man kalt erwischt wird. So geschehen heute morgen: Ich wollte ein paar Dokumente in mein DMS archivieren, als die Meldung „No space left on device“ aufpoppte. Die Systempartition war vollgelaufen (das ließ sich zwar beheben, schöner wär’s aber gewesen, wenn ich das vorher mitgekriegt hätte). Um solche Überraschungen zukünftig zu reduzieren (ganz ausschließen lässt sich sowas wohl nicht), drängt sich die Nutzung eines Monitoring-Systems auf. Von diesen Systemen gibt es eine ganze Menge – von kostenlosen Shellskripts bis hin zu Systemen, die in Enterprise-Umgebungen eingesetzt werden (und dann einen Datenbank-Cluster mit angeschlossener Webserferfarm brauchen).

Ich habe nach einigem Rumprobieren CheckMK entdeckt – das läuft in einer Docker-Umgebung und ist skalierbar (lässt sich also zuhause für drei Geräte nutzen oder im multinationalen Konzern mit abertausenden Systemen). Außerdem gibt es Agenten für sehr viele Betriebssysteme. (Bei Agenten handelt es sich um ein Stück Software, das auf dem zu überwachenden Gerät installiert wird; diese Software ermittelt die Systemdaten und sendet sie an den Monitoring-Server.)

CheckMK kommt in drei Varianten daher:

  • CheckMK Raw: Diese Version ist kostenlos und für beliebig viele Geräte uneingeschränkt nutzbar. Einziger Haken: Die Daten werden nur im Minutentakt erhoben – wenn also jetzt ein Rechner stirbt, kann es passieren, dass das System das erst in einer Minute meldet (das ist in der heimischen Umgebung sicher nicht ganz so schlimm, in anderen Umgebungen kann es schon ärgerlich sein).
  • CheckMK Free: Auch diese Version ist kostenlos, allerdings nach 30 Tagen auf 25 zu überwachende Geräte beschränkt. Dafür werden die Systemdaten (man nennt sie auf „Metriken“) im Sekundentakt erfasst.
  • CheckMK Standard: Die Vollversion; erfasst Metriken im Sekundentakt und ist für beliebig viele zu überwachende Geräte nutzbar. Kostet allerdings mindestens €600 pro Jahr (plus Mehrwertsteuer) und scheidet damit für mein privates Netzwerk aus.

Darüber hinaus gibt es noch eine Ausgabe für Anbieter von Managed Services, die für Normalsterbliche auch nicht in Betracht kommt.

Nachdem ich neulich für Portainer gescwärmt habe, werde ich CheckMK über die Konsole aufsetzen – nicht, weil ich Portainer nicht mehr mag, sondern weil die Dokumentation ein einfaches Beispiel bereithält, wie man CheckMK zum Laufen kriegt – da ist einfach eine Befehlszeile abgedruckt, die man fast 1:1 übernehmen kann… Einzig das Volume muss vorher erstellt werden:

docker volume create checkmk_data

Danach wird der Container gestartet:

docker container run -dit \
  -p 8081:5000 \
  --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 \
  -v checkmk_data:/omd/sites \
  --name checkmk \
  -v /etc/localtime:/etc/localtime:ro \
  --restart always checkmk/check-mk-raw:2.0.0-latest

Die Parameter hatte ich in einem früheren Artikel schon mal erläutert, daher hier die Kurzfassung:

  • -p 8081:5000
    Der Webserver von CheckMK hört auf Port 5000; von außen wird er über Port 8081 zugänglich gemacht
  • –tempfs…
    erzeugt ein temporäres Dateisystem im RAM des Containers; das dient der Performance-Steigerung
  • -v checkmk_data
    ist das Volume, in dem die Daten der Anwendung gespeichert werden
  • –name checkmk
    macht den Container unter einem sprechenden (weil einfacher zu merkenden) Namen bekannt
  • -v /etc/localtime…
    verpasst dem Container die Zeitzone des Docker-Hosts
  • –restart always
    sorgt dafür, dass der Container immer neu gestartet wird

Am Ende der Zeile wird der CheckMK-Container in der aktuellsten 2.0.0er-Version gezogen. Wenn wir diesen Befehl ausgeführt haben, dauert es einen Augenblick, bis der Container fertig ist und läuft. Wenn wir nun im Browser die IP-Adresse des Dockerhosts auf Port 8081 aufrufen, können wir uns anmelden – der Benutzername lautet cmkadmin. Und das Passwort? Das wird ins Logfile des Containers geschrieben. Wer mag, kann es sich mit

docker logs checkmk

anzeigen lassen. Alternativ geht das auch mit Portainer recht komfortabel:

In der Container-Übersicht klicken wir auf den Container, den wir uns ansehen wollen – das ist in diesem Fall also checkmk:

Ziemlich mittig in dem Fenster gibt es eine Zeile mit mehreren Links – der erste, „Logs“, ist der, den wir wollen. Klicken wir darauf, wird das Log des Containers angezeigt:

Das Passwort habe ich markiert – nicht wundern: Ein Sicherheitsrisiko ist das nicht. Zum einen ist diese Seite nur aus meinem internen Netz erreichbar; zum anderen habe ich das Passwort geändert („Allogator3“ für die, die sich an „Scrubs“ erinnern). Mit diesem Passwort kann sich der Benutzer cmkadmin anmelden und landet im Dashboard. Was da passiert, wird im nächsten Artikel beschrieben…