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.