Checkmk
to checkmk.com

1. Grundsätzliches

Es gibt viele Gründe, weshalb Anwender Software in einem Docker-Container betreiben möchten. Auch Checkmk kann man in einer Docker-Umgebung einsetzen. Ein Anwendungsfall kann sein, eine dynamisch erstellte Containergruppe zu überwachen und Checkmk zu einem Teil dieser Gruppe zu machen. Wird die Containergruppe nicht mehr benötigt, kann auch die Instanz von Checkmk wieder entfernt werden.

Wichtig: Auch wenn es möglich und sehr einfach ist, Checkmk in eine containerisierte Umgebung zu integrieren, ist das nicht immer der sinnvollste Weg. Da jegliche Virtualisierung zum einen eine verringerte Performance mit sich bringt und zum anderen das Monitoring prinzipiell möglichst wenige physische Abhängigkeiten haben sollte, eignen sich Checkmk-Container zum Beispiel nicht, um damit die gesamte Infrastruktur zu überwachen. In einem in sich abgeschlossenen Container-Cluster kann es aber durchaus zielführend sein, in dieses einen Checkmk-Container zu integrieren, um es direkt von innen heraus zu überwachen. Prüfen Sie also auch und besonders hier, ob das Werkzeug Docker/Container für Ihre konkrete Anforderung das richtige ist.

Um Ihnen die Nutzung als Container so einfach wie möglich zu machen, stellen wir für jede Checkmk-Edition eigene Images zur Verfügung, welche neben Checkmk das Linux-Betriebssystem Ubuntu enthalten:

CRE Checkmk Raw

Docker Hub oder Checkmk-Download-Seite

Kommerzielle Editionen

Checkmk-Download-Seite (für Checkmk Cloud), Checkmk-Kundenportal

Hinweis: Die Bereitstellung im Docker Hub ermöglicht den Download und die Installation in einem Kommando, wie wir im Kapitel zur Installation von Checkmk Raw zeigen werden.

In diesem Artikel führen wir Sie durch die Einrichtung von Checkmk in Docker und zeigen Ihnen einige Tricks, die das Leben mit Checkmk in Docker einfacher machen. Weitere Informationen finden Sie im Artikel Checkmk-Server im Docker-Container.

2. Voraussetzungen

Zur Ausführung der in diesem Artikel vorgestellten Kommandos benötigen Sie eine funktionierende Installation der Docker Engine und Grundkenntnisse in deren Nutzung.

3. Installation der Checkmk Raw

CRE Der Start mit Docker mit der CRE Checkmk Raw ist einfach. Ein passendes Image steht Ihnen direkt über Docker Hub zur Verfügung. Das Ganze geht mit einem einzigen Kommando auf der Linux-Konsole. Dabei wird nicht nur ein Docker-Container mit Checkmk erzeugt, sondern auch gleich eine Monitoring-Instanz mit dem Namen cmk eingerichtet und gestartet. Diese ist sofort bereit zur Anmeldung mit dem Benutzer cmkadmin.

root@linux# docker container run -dit -p 8080:5000 -p 8000:8000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.3.0-latest
Unable to find image 'checkmk/check-mk-raw:2.3.0-latest' locally
2.3.0-latest: Pulling from checkmk/check-mk-raw
43f89b94cd7d: Pull complete
c6b4550f40cc: Pull complete
86f6e730bc27: Pull complete
cf0f3e792f33: Pull complete
81777b9c4e2e: Pull complete
da44e2c4d930: Pull complete
Digest: sha256:8a71002e019fab358bcefb204d6bff3390713781df99fb5c6587b289df9796e4
Status: Downloaded newer image for checkmk/check-mk-raw:2.3.0-latest
86e14b7d604033cc44f4b92c25ce67f45967c82db3e84f2e16fee76f4ff48fdf

Nähere Informationen zu den benutzten Optionen:

Option Beschreibung

-p 8080:5000

Der Webserver des Containers lauscht standardmäßig auf Port 5000. In diesem Beispiel wird der Port 8080 des Docker-Nodes an den Port des Containers gebunden, damit dieser von außen erreichbar ist. Wenn Sie keinen anderen Container oder Prozess haben, welcher den Standard-HTTP-Port 80 benutzt, können Sie den Container auch daran binden. In diesem Fall würde die Option so aussehen: -p 80:5000. Die Nutzung von HTTPS wird im Artikel Checkmk-Server im Docker-Container erläutert.

-p 8000:8000

Seit Checkmk 2.1.0 müssen Sie zusätzlich noch den Port des Agent Receivers veröffentlichen, um die Registrierung des Agent Controllers durchführen zu können.

--tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000

Für eine optimale Performance können Sie ein temporäres Dateisystem direkt im RAM des Docker-Nodes nutzen. Mit dieser Option geben Sie den Pfad zu diesem Dateisystem an. Wenn Sie die ID der Instanz ändern, so muss auch dieser Pfad entsprechend angepasst werden.

-v monitoring:/omd/sites

Diese Option bindet die Daten der Instanz in diesem Container an eine persistente Stelle im Dateisystem des Docker-Nodes. Sie gehen daher nicht verloren, wenn der Container wieder entfernt wird. Der Teil vor dem Doppelpunkt bestimmt hierbei den Namen. So können Sie später den Speicherpunkt eindeutig identifizieren, zum Beispiel mit dem Befehl docker volume ls.

--name monitoring

Hiermit wird der Name des Containers definiert. Dieser Name muss eindeutig sein und darf auf dem Docker-Node kein zweites Mal verwendet werden.

-v /etc/localtime:/etc/localtime:ro

Mit dieser Option nutzen Sie in dem Container dieselbe Zeitzone wie im Docker-Node. Gleichzeitig wird die Datei nur lesend (ro) eingebunden.

--restart always

Normalerweise startet ein Container nicht neu, wenn er gestoppt wurde. Mit dieser Option sorgen Sie dafür, dass er eben doch automatisch neu startet. Wenn Sie allerdings einen Container manuell stoppen, wird er nur neu gestartet, wenn der Docker-Daemon neu startet oder der Container selbst manuell neu gestartet wird.

checkmk/check-mk-raw:2.3.0-latest

Bezeichnung des Checkmk Images im Format <Repository>:<Tag>. Die Bezeichnungen können Sie über den Befehl docker images auslesen.

Nachdem alle benötigten Dateien geladen wurden und der Container gestartet ist, sollten Sie die GUI von Checkmk über http://localhost:8080/cmk/check_mk/ erreichen:

Checkmk-Anmeldedialog.

Sie können sich nun erstmals einloggen und Checkmk ausprobieren. Das initiale Passwort für den Benutzer cmkadmin finden Sie in den Logs, die für diesen Container geschrieben werden (hier auf die wesentlichen Informationen gekürzt):

root@linux# docker container logs monitoring
Created new site cmk with version 2.3.0p1.cre.

  The site can be started with omd start cmk.
  The default web UI is available at http://73a86e310b60/cmk/

  The admin user for the web applications is cmkadmin with password: 2JLysBmv
  For command line administration of the site, log in with 'omd su cmk'.
  After logging in, you can change the password for cmkadmin with 'cmk-passwd cmkadmin'.

Hinweis: Die im Log angezeigte URL zum Zugriff auf die Weboberfläche mit der ID des Containers ist nur innerhalb des Containers bekannt und für den Zugriff von außen im Webbrowser nicht geeignet.

3.1. Kurzlebige Container

Wenn Sie sich sicher sind, dass die Daten in der Checkmk-Container-Instanz nur in diesem speziellen Container verfügbar sein sollen, können Sie entweder darauf verzichten, dem Container einen persistenten Datenspeicher zuzuordnen oder diesen Speicher automatisch beim Stoppen des Containers entfernen.

Um den persistenten Speicher wegzulassen, lassen Sie schlicht die Option -v monitoring:/omd/sites weg:

root@linux# docker container run -dit -p 8080:5000 -p 8000:8000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.3.0-latest

Um einen persistenten Speicher anzulegen und beim Stoppen automatisch zu entfernen, verwenden Sie den folgenden Befehl:

root@linux# docker container run --rm -dit -p 8080:5000 -p 8000:8000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v /omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro checkmk/check-mk-raw:2.3.0-latest

Dieser Befehl hat — im Gegensatz zu dem vorherigen — lediglich zwei andere Optionen:

  • Mit --rm übergeben Sie direkt zum Start den Befehl, dass auch der Datenspeicher für den Container beim Stoppen entfernt werden soll. Auf diese Weise sparen Sie sich das manuelle Aufräumen, wenn Sie viele kurzlebige Checkmk-Container haben.

    Wichtig: Beim Stoppen wird auch der Container selbst komplett entfernt!

  • Die Option -v /omd/sites ist im Vergleich zu oben angepasst. Sie beinhaltet keinen selbst vergebenen Namen mehr, da der Datenspeicher sonst nicht korrekt gelöscht wird.

4. Installation der kommerziellen Editionen

CEE Auch die kommerziellen Editionen können Sie in einem Docker-Container betreiben. Die Images der kommerziellen Editionen sind nicht frei über Docker Hub verfügbar. Laden Sie sich die gewünschte Edition und Version von der Checkmk-Download-Seite (für Checkmk Cloud) oder im Checkmk-Kundenportal herunter.

Laden Sie das Image aus der heruntergeladenen tar-Archivdatei in Docker:

root@linux# docker load -i check-mk-cloud-docker-2.3.0p1.tar.gz
1f35d34cf8fa: Loading layer [==================================================>]  2.048kB/2.048kB
9fcc49e3e223: Loading layer [==================================================>]  365.5MB/365.5MB
96507768f1a4: Loading layer [==================================================>]  261.2MB/261.2MB
a65c9018ee9b: Loading layer [==================================================>]   1.27GB/1.27GB
4dbb1e959fe6: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: checkmk/check-mk-cloud:2.3.0p1

Danach können Sie den Container mit einem sehr ähnlichen Befehl wie oben starten. Achten Sie nur darauf, dass Sie den Namen des geladenen Images (Loaded image) aus der vorherigen Kommandoausgabe im folgenden Startkommando verwenden, also in diesem Beispiel checkmk/check-mk-cloud:2.3.0p1:

root@linux# docker container run -dit -p 8080:5000 -p 8000:8000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-cloud:2.3.0p1
f00d10fcb16313d3539065933b90c4dec9f81745f3d7283d794160f4f9b28df1

Nach dem Start des Containers können Sie sich an der Checkmk-Weboberfläche anmelden, wie es bei der Installation der Checkmk Raw beschrieben ist.

5. Update

Wie Sie Checkmk im Docker-Container aktualisieren können, ist im Artikel Updates und Upgrades beschrieben.

6. Deinstallation

Bei der Deinstallation entfernen Sie den Docker-Container und optional die beim Erstellen des Containers erzeugten Daten.

Lassen Sie sich die Docker-Container auflisten:

root@linux# docker container ls -a
CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                    PORTS                              NAMES
9a82ddbabc6e   checkmk/check-mk-cloud:2.3.0p1   "/docker-entrypoint.…"   57 minutes ago   Up 53 minutes (healthy)   6557/tcp, 0.0.0.0:8080->5000/tcp   monitoring

Übernehmen Sie aus der Kommandoausgabe die angezeigte CONTAINER ID für die nächsten Kommandos.

Stoppen Sie zuerst den Container und entfernen Sie ihn anschließend:

root@linux# docker container stop 9a82ddbabc6e
9a82ddbabc6e
root@linux# docker container rm 9a82ddbabc6e
9a82ddbabc6e

Falls Sie den Container mit der Option -v monitoring:/omd/sites erstellt haben, können Sie auch das dadurch erstellte Docker-Volume entfernen: docker volume ls zeigt die Volumes an und docker volume rm <VOLUME NAME> löscht das Volume.

Auf ähnliche Weise können Sie abschließend auch das Image entfernen: Mit docker images erhalten Sie die Liste der Images und docker rmi <IMAGE ID> entfernt das ausgewählte Image.

Auf dieser Seite