So starten Sie mit Checkmk

Die Überwachung von IT-Infrastrukturen stellt eine anspruchsvolle Aufgabe dar, jedoch kann ein Werkzeug wie Checkmk diesen Prozess erheblich vereinfachen.

Zahlreiche Unternehmen integrieren Cloud-basierte Technologien in ihre technischen Strukturen, um die Leistungsfähigkeit ihrer Produkte zu steigern. Oftmals betreiben sie parallel ihre eigenen Netzwerke und lokale Infrastrukturen. Diese Entwicklung hin zu hybriden Infrastrukturen erfordert eine angepasste Überwachungsstrategie, da kontinuierlich eine große Menge an Metriken von verschiedenen Komponenten wie Betriebssystemen, Speichermedien, Servern und Cloud-Umgebungen generiert wird. Diese sind von entscheidender Bedeutung, um die optimale Leistung von Anwendungen auch zu Spitzenzeiten sicherzustellen.

Diese Metriken liefern essenzielle Informationen für DevOps-Teams, um den Zustand ihrer Infrastruktur zu verstehen. Daher benötigen Unternehmen eine Überwachungslösung, die es ihnen ermöglicht, Probleme in der Produktion schnell anhand von Metriken, Visualisierungen und Analysen zu erkennen. Checkmk hat sich als ein besonders beliebtes und nützliches Werkzeug für die Infrastrukturüberwachung etabliert. In diesem Beitrag werde ich erläutern, warum Checkmk seinen guten Ruf verdient und wie Sie die ersten Schritte damit machen können.

Was genau ist Checkmk?

Checkmk führt kontinuierliche Überprüfungen aller relevanten Aspekte moderner IT-Umgebungen durch und eignet sich besonders gut für hybride Architekturen. Checkmk zeichnet sich durch seine Flexibilität aus und unterstützt Container, Cloud-Ressourcen sowie On-Premises-Systeme wie Switches und Server. Gleichzeitig ist der Einstieg und die Verwaltung der Überwachung dank automatischer Alarme, die auf umfassendem IT-Know-how basieren, sowie weiterer intelligenter Funktionen sehr einfach, was Ihnen viel Zeit erspart.

Wenn Sie Checkmk kostenlos nutzen möchten, haben Sie zwei Möglichkeiten: Einerseits steht Ihnen die Checkmk Raw Edition zur Verfügung, die vollständig Open Source ist und ohne Einschränkungen kostenlos genutzt werden kann. Andererseits gibt es die Checkmk Enterprise Testversion, die alle zusätzlichen Funktionen der Checkmk Enterprise Editionen beinhaltet, jedoch die Anzahl der Hosts nach 30 Tagen auf 25 begrenzt.

Wie bewältigt Checkmk dieses Problem?

Checkmk ist in der Lage, Anwendungen, Server, Datenbanken, Netzwerke, Container, Speicher und viele weitere Komponenten zu überwachen. Es bietet eine umfangreiche Auswahl von über 2.000 Überwachungs-Plugins an. Diese Plugins ermöglichen es Checkmk, seine Funktionalitäten zu erweitern und spezifische Technologien verschiedener Anbieter auf dem Markt zu überwachen. Zu den populären Checkmk-Plugins zählen jene für Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS und Dell. Mit über 2.000 Plugins hebt sich Checkmk als eine vielversprechende Lösung für die Infrastrukturüberwachung hervor.

Darüber hinaus ist es für jede Überwachungslösung entscheidend, wie schnell und präzise Metriken erfasst und intelligente Warnmeldungen eingerichtet werden können. Checkmk erfüllt all diese Kriterien. Dank der automatischen Erkennungsfunktion kann Checkmk mehr als 90 % der Dienste und Geräte identifizieren. In der heutigen Zeit benötigen die meisten Unternehmen Skalierbarkeit und Automatisierung. Checkmk ermöglicht es Ihnen, die Überwachungskapazität von wenigen hundert auf Tausende von Hosts zu erweitern und die verfügbaren Automatisierungsagenten effektiv zu nutzen.

Checkmk in einem Docker-Container installieren

In diesem Artikel werde ich die Checkmk Raw Edition in einem Docker-Container auf einem Linux-Server mit Ubuntu 20.04 installieren. Von Dockerhub können Sie das Docker-Image von Checkmk herunterladen. Es wurde bereits fast 5 Millionen Mal abgerufen, was seine Popularität unterstreicht.

Laden Sie das Docker-Image der aktuellen Checkmk-Version herunter und starten Sie es in einem Container mit dem Befehl docker container run.

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

Der Container wird als „monitoring“ bezeichnet, der Webserver ist auf Port 5000 erreichbar und wird auf Port 8080 des Hosts abgebildet. Der Container nutzt ein temporäres Dateisystem und die lokale Zeitzone.

[email protected]:~$ sudo docker container run -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 --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
33847f680f63: Pull complete
474905f2790b: Pull complete
1804f0e63047: Pull complete
f36fe6334464: Pull complete
03c68dfa69cf: Pull complete
b60cfdb78e96: Pull complete
Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6
Status: Downloaded newer image for checkmk/check-mk-raw:2.0.0-latest
9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf

Sie können den erfolgreichen Download des Docker-Images mit dem Befehl docker images überprüfen.

[email protected]:~$ sudo docker images
REPOSITORY              TAG            IMAGE ID       CREATED        SIZE
bitnami/node-exporter   latest         ba0f519ca49b   34 hours ago   104MB
checkmk/check-mk-raw    2.0.0-latest   097319702432   13 days ago    1.03GB
hello-world             latest         feb5d9fea6a5   7 weeks ago    13.3kB

Überprüfen Sie mit dem Befehl docker ps, ob der Checkmk-Container aktiv ist.

[email protected]:~$ sudo docker ps
CONTAINER ID   IMAGE                               COMMAND                  CREATED              STATUS                             PORTS                                                 NAMES
9729e323a840   checkmk/check-mk-raw:2.0.0-latest   "/docker-entrypoint.…"   About a minute ago   Up 59 seconds (health: starting)   6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp   monitoring
3d3a95ed3c25   bitnami/node-exporter:latest        "/opt/bitnami/node-e…"   25 hours ago         Up 25 hours                        9100/tcp                                              node-exporter

Um die Zugangsdaten für die Checkmk-Weboberfläche zu erhalten, lassen Sie sich das Container-Log von Checkmk ausgeben.

[email protected]:~$ sudo docker container logs 9729e323a840
### CREATING SITE 'cmk'
Adding /opt/omd/sites/cmk/tmp to /etc/fstab.
Going to set TMPFS to off.
Temporary filesystem already mounted
Updating core configuration...
Generating configuration for core (type nagios)...Precompiling host checks...OK
OK
Executing post-create script "01_create-sample-config.py"...OK
Created new site cmk with version 2.0.0p15.cre.

  The site can be started with omd start cmk.
  The default web UI is available at https://9729e323a840/cmk/

  The admin user for the web applications is cmkadmin with password: ClFxBPre
  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'.

### STARTING XINETD
[ ok ] Starting internet superserver: xinetd.
### STARTING SITE
Temporary filesystem already mounted
Starting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...OK
Starting apache...OK
Starting redis...OK
Initializing Crontab...OK
### STARTING CRON
### CONTAINER STARTED

Standardmäßig ist der Checkmk-Docker-Container unter https://localhost:8080/cmk/check_mk erreichbar. Das Log des Befehls zeigt, dass der Benutzername cmkadmin ist und das Passwort in meinem Fall ClFxBPre lautet. Öffnen Sie die Adresse in einem Webbrowser und melden Sie sich mit diesen Zugangsdaten an.

Nach der Anmeldung wird das Haupt-Dashboard angezeigt, welches zu Beginn leer ist, da noch keine Hosts hinzugefügt wurden.

Docker mit Checkmk überwachen

Üblicherweise würden Sie den Checkmk-Agenten auf dem Rechner installieren, der Ihre Docker-Container hostet, und das Checkmk-Plugin für Docker verwenden, um alle Container zu überwachen. Dieses Plugin (mk_docker.py) nutzt die Docker-Python-API, um Docker-Container zu verfolgen und Einblicke in ihren Echtzeitstatus sowie ihre Leistung zu erhalten. Weitere Details dazu finden Sie unter Docker-Monitoring mit Checkmk auf der Checkmk-Website.

Da in meiner Docker-Umgebung nur ein Docker-Container, mein Checkmk-Container, läuft, werde ich nur den Checkmk-Agenten im Docker-Container nutzen und Checkmk nicht auf meinem Docker-Host installieren. Der Agent ist bereits im Checkmk-Container vorhanden, daher muss ich lediglich meinen Checkmk-Container als Host hinzufügen.

Ermitteln wir die IP-Adresse, auf der der Docker-Dienst läuft, indem wir im Terminal ifconfig verwenden.

[email protected]:~$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:59ff:fe8a:8ba8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:59:8a:8b:a8  txqueuelen 0  (Ethernet)
        RX packets 5559  bytes 7230215 (7.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4164  bytes 614703 (614.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.108  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::144a:4682:35e7:bb2  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:91:82:82  txqueuelen 1000  (Ethernet)
        RX packets 699491  bytes 1044235622 (1.0 GB)
        RX errors 0  dropped 7  overruns 0  frame 0
        TX packets 101260  bytes 7555470 (7.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 20655  bytes 8446042 (8.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20655  bytes 8446042 (8.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth44ba5ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::145f:1fff:fee9:a7b0  prefixlen 64  scopeid 0x20<link>
        ether 16:5f:1f:e9:a7:b0  txqueuelen 0  (Ethernet)
        RX packets 5559  bytes 7308041 (7.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4173  bytes 616263 (616.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vetha82ee43: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::585c:6fff:fe0a:a79b  prefixlen 64  scopeid 0x20<link>
        ether 5a:5c:6f:0a:a7:9b  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 9799 (9.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

In meinem Fall läuft der Docker-Dienst auf 172.17.0.1. Fügen Sie im nächsten Schritt den Docker-Dienst als Host in Checkmk hinzu, um ihn zu überwachen.

  • Navigieren Sie in Checkmk zu „Setup“ -> „Hosts“.

  • Geben Sie nun den Hostnamen und die IP-Adresse ein und klicken Sie auf „Speichern & zur Dienstkonfiguration“.

  • Sobald Sie dies tun, startet Checkmk automatisch die Dienstentdeckung.

Scrollen Sie nach unten, um die Überwachungsdienste anzuzeigen, die auf dem Docker-Host laufen. Sie werden feststellen, dass die Dienste derzeit noch nicht überwacht werden. Die einfachste Methode, um alles zu überwachen, ist das Klicken auf „Alles reparieren“. Alternativ können Sie auch detailliert konfigurieren, welche Dienste überwacht werden sollen. Klicken Sie dazu auf das „+“-Zeichen, wenn Sie einen Dienst überwachen möchten.

Sobald Sie die Dienste ausgewählt haben, die überwacht werden sollen, werden diese im Reiter „Überwachte Dienste“ aufgelistet. Hier erhalten Sie den Status jedes einzelnen Dienstes. Wenn Sie auf das „? „-Zeichen klicken, wird der entsprechende Dienst in die Liste der unentschiedenen Dienste verschoben. Das „X“-Zeichen hingegen verschiebt den Dienst in den Reiter „Deaktivierte Dienste“.

Ich habe vier Dienste deaktiviert, die nun im Reiter „Deaktivierte Dienste“ angezeigt werden.

Nachdem Sie die Dienste hinzugefügt haben, die Sie überwachen möchten, müssen Sie die Änderungen aktivieren, bevor sie wirksam werden.

  • Klicken Sie auf das gelbe Ausrufezeichen (!) in der oberen rechten Ecke, um die ausstehenden Änderungen anzuzeigen.
  • Wählen Sie „Auf ausgewählten Websites aktivieren“.

Sie haben erfolgreich Docker-Dienste mithilfe von Checkmk überwacht!

Fazit

Dies war eine Einführung in Checkmk, einem Werkzeug für die Infrastrukturüberwachung. Es handelt sich um ein benutzerfreundliches Tool, das Sie zur Überwachung Ihrer Produktionsumgebungen einsetzen können. Ich empfehle Ihnen, die Checkmk Free Edition auszuprobieren, um Ihre Überwachung zu starten.