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 Debian enthalten:

CRE Checkmk Raw Edition

Docker Hub oder Checkmk-Download-Seite

CEE Checkmk Enterprise Editions

Checkmk-Download-Seite (für die Free Edition), Checkmk-Kundenportal

Hinweis: Die Bereitstellung im Docker Hub ermöglicht den Download und die Installation in einem Kommando, wie wir im Kapitel zur Installation der Raw Edition 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 Raw Edition

CRE Der Start mit Docker mit der CRE Checkmk Raw Edition 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 Monitoringinstanz 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 --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.0.0-latest
Unable to find image 'checkmk/check-mk-raw:2.0.0-latest' locally
2.0.0-latest: Pulling from checkmk/check-mk-raw
69692152171a: Pull complete
9c7de4c0761f: Pull complete
6707e96b1346: Pull complete
b6a32bb602b9: Pull complete
906e243cffff: Pull complete
dcc72c1a4553: Pull complete
Digest: sha256:a4f25bd3b81eb7d3e1f4caa11025243b9fc4c8397ffdf41ffb23ca685161bfcd
Status: Downloaded newer image for checkmk/check-mk-raw:2.0.0-latest
73a86e310b60bfdd9ebe76ad110139b612bce02b22dd6aaf5fdb341323397299

Nähere Informationen zu den benutzten Optionen:

OptionBeschreibung

-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.

--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.0.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.0.0.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 'htpasswd etc/htpasswd 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 --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.0.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 --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.0.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 Enterprise Editions

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

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

root@linux# docker load -i check-mk-enterprise-docker-2.0.0p5.tar.gz
9e77dbc9fb80: Loading layer [==================================================>]  2.048kB/2.048kB
333c8e825260: Loading layer [==================================================>]  305.6MB/305.6MB
23a76a052da6: Loading layer [==================================================>]  175.7MB/175.7MB
f8583c4a8a97: Loading layer [==================================================>]  758.4MB/758.4MB
789d4e45d714: Loading layer [==================================================>]  6.656kB/6.656kB
Loaded image: checkmk/check-mk-enterprise:2.0.0p5

Danach können Sie den Container mit einem sehr ähnlichem 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-enterprise:2.0.0p5:

root@linux# docker container run -dit -p 8080:5000 --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-enterprise:2.0.0p5
f00d10fcb16313d3539065933b90c4dec9f81745f3d7283d794160f4f9b28df1

Nach dem Start des Containers können Sie sich an der Checkmk-Weboberfläche anmelden, wie es bei der Installation der Raw Edition 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-enterprise:2.0.0p5   "/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