Die Überwachung der IT-Infrastruktur ist komplex, aber ein Tool wie Checkmk macht es einfacher.

Viele Unternehmen haben Cloud-native Technologien zu ihrem Tech-Stack hinzugefügt, um die Leistung ihrer Produkte zu verbessern. Gleichzeitig betreiben sie häufig weiterhin ihre eigenen Netzwerke und ihre lokale Infrastruktur. Diese Umstellung auf hybride Infrastrukturen muss bei der Überwachung berücksichtigt werden, da jede Sekunde eine große Anzahl von Metriken für verschiedene Komponenten wie Betriebssystem, Speicher, Server, Cloud-Umgebungen usw. generiert werden. Sie alle sind wichtig, um sicherzustellen, dass Anwendungen zu Spitzenzeiten laufen Leistung.

Diese Metriken sind ein wesentliches Signal für DevOps-Teams den Zustand ihrer Infrastruktur zu verstehen. Aus diesem Grund benötigen Unternehmen eine Überwachungslösung, die ihnen hilft, Probleme in der Produktion mit Metriken, Visualisierungen und Analysen schnell zu identifizieren. Checkmk ist eines der beliebtesten und hilfreichsten Infrastruktur-Monitoring-Tools. In diesem Artikel verrate ich Ihnen, warum Checkmk seinen guten Ruf verdient und wie Sie die ersten Schritte damit gehen können.

What is Checkmk?

Checkmk überprüft laufend alle Aspekte moderner IT-Umgebungen auf Funktion und eignet sich besonders gut für hybride Infrastrukturen. Einerseits ist Checkmk flexibel und unterstützt Container, Cloud-Assets und On-Premises-Systeme wie Switches und Server. Andererseits ist der Einstieg und die Verwaltung Ihres Monitorings wirklich einfach, denn Checkmk kommt mit automatischen Alerts, die auf viel IT-Know-how basieren, und weiteren intelligenten Features, die Ihnen viel Zeit sparen.

Wenn Sie Checkmk kostenlos nutzen möchten, haben Sie zwei Möglichkeiten: Zum einen können Sie sich für die Checkmk Raw Edition entscheiden, die vollständig Open Source und ohne Einschränkungen kostenlos nutzbar ist. Zweitens gibt es die Checkmk Enterprise Testversion das alle zusätzlichen Features der Checkmk Enterprise Editions hat, aber nach 30 Tagen wird die Anzahl der Hosts auf 25 begrenzt.

Wie löst Checkmk das Problem?

Checkmk kann Anwendungen, Server, Datenbanken, Netzwerke, Container, Speicher und so weiter überwachen. Es bietet eine riesige Liste mit über 2,000 Überwachungs-Plug-Ins. Mit diesen Plugins. Checkmk kann erweitert werden, um bestimmte Technologien verschiedener Anbieter zu überwachen, die auf dem Markt verfügbar sind. Einige beliebte Checkmk-Plugins sind für Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS, Dell. Mit seinen mehr als 2,000 Plug-Ins sticht Checkmk als eine sehr vielversprechende Infrastrukturüberwachungslösung hervor, die derzeit verfügbar ist.

Außerdem ist es für jede Überwachungslösung entscheidend, wie schnell und korrekt sie die Metriken lesen und intelligente Warnungen und Benachrichtigungen einrichten kann. All diese Kriterien erfüllt die Lösung von Checkmk. Mit seiner Auto-Discovery-Funktion kann Checkmk mehr als 90 % der Dienste und Geräte identifizieren. Heutzutage benötigen die meisten Unternehmen Skalierbarkeit und Automatisierung. Sie können die Überwachungskapazität in Checkmk problemlos von hundert Hosts auf Tausende von Hosts skalieren und die für die Automatisierung verfügbaren Agenten nutzen.

Install Checkmk in a Docker container

In diesem Artikel installiere ich die Checkmk Raw Edition in einem Docker-Container auf einem Linux-Server mit Ubuntu 20.04. Von Dockerhub können Sie die herunterladen Docker-Container von Checkmk. Es hat bisher fast 5 Millionen Pulls, was zeigt, wie beliebt und weit verbreitet Checkmk ist.

checkmk dockerhub

Nehmen Sie das Docker-Image mit der neuesten Checkmk-Version und führen Sie es mit dem Befehl in einem Container aus 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 Name des Containers lautet „monitoring“, der Webserver lauscht auf Port 5000 und öffnet auf Port 8080 des Knotens. Der Container verwendet das temporäre 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 überprüfen, ob das Docker-Image heruntergeladen wurde, indem Sie den Befehl ausführen docker images.

[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

Führen Sie den Befehl aus docker ps um zu sehen, ob der Checkmk-Container läuft.

[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, drucken Sie das Checkmk-Container-Log aus.

[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 http://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

Der Checkmk-Docker-Container wird standardmäßig unter ausgeführt https://localhost:8080/cmk/check_mk. Die Ausgabe des obigen Befehls sagt Ihnen, dass der Benutzername cmkadmin und das Passwort ist, in meinem Fall ist das Passwort ClFxBPre. Öffnen Sie die Adresse in einem Webbrowser und melden Sie sich mit Ihren Anmeldeinformationen an.

Checkmk-Anmeldung

Sobald Sie sich angemeldet haben, erscheint das „Haupt-Dashboard“. Es ist leer, weil Sie noch keine Hosts hinzugefügt haben.

checkmk-Dashboard

Docker mit Checkmk überwachen

Normalerweise würden Sie den Checkmk-Agenten auf Ihrem Rechner installieren, der Ihre Docker-Container hostet, und dann das Checkmk-Plug-in für Docker verwenden, um alle Container zu überwachen. Dieses Plug-in (mk_docker.py) verwendet die Python-API von Docker, um Docker-Container zu verfolgen und einen vollständigen Einblick in ihren Echtzeitstatus und ihre Leistung zu erhalten. Sie können mehr Details darüber lesen Docker-Monitoring mit Checkmk auf der Checkmk-Website.

Da in meiner Docker-Umgebung nur ein Docker-Container läuft, mein Checkmk-Docker-Container, werde ich nur den Checkmk-Agenten verwenden, der im Docker-Container läuft, und den Checkmk nicht auf meinem Docker-Host installieren. Der Agent ist im Checkmk-Container vorinstalliert, also muss ich nur noch meinen Checkmk-Container als Host hinzufügen.

Lassen Sie uns die IP-Adresse abrufen, auf der der Docker-Dienst ausgeführt wird, indem Sie verwenden ifconfig auf dem Terminal.

[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 weiter 172.17.0.1. Im nächsten Schritt fügen Sie den Docker-Dienst als Host in Checkmk hinzu, damit er überwacht werden kann.

  • Gehen Sie zu Checkmk und klicken Sie auf Setup -> Hosts.

checkmk-Hosts

  • Klicken Sie auf „Host hinzufügen“.

checkmk Host hinzufügen

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

Checkmk-Host-Docker

  • Sobald Sie das tun, startet Checkmk automatisch die Diensterkennung.

checkmk Docker-Dienst

Scrollen Sie nach unten, um die Überwachungsdienste anzuzeigen, die unter dem Docker-Host ausgeführt werden. Sie können sehen, dass die Dienste derzeit nicht überwacht werden. Wenn Sie alles überwachen möchten, klicken Sie am einfachsten auf „Alles reparieren“. Wenn Sie konfigurieren möchten, welche Dienste überwacht werden sollen, können Sie dies ebenfalls im Detail tun. Klicken Sie auf die + anmelden, wenn Sie einen Dienst überwachen möchten.

Checkmk Docker-Dienstliste

Sobald Sie die Dienste ausgewählt haben, die Sie überwachen möchten, werden sie auf der Registerkarte „Überwachte Dienste“ angezeigt. Sie erhalten alle Statusdetails für jeden Dienst, den Sie überwachen. Wenn Sie auf klicken ? unterzeichnen, wird dieser Dienst in die Liste der unentschiedenen Dienste verschoben. Wenn Sie auf die klicken X unterschreiben, wird der Dienst auf die Registerkarte „Deaktivierte Dienste“ verschoben.

checkmk überwachte Dienste

Ich habe vier Dienste deaktiviert, sodass ich sie auf der Registerkarte "Dienste deaktivieren" sehen kann.

checkmk deaktivierte Dienste

Wenn Sie mit dem Hinzufügen der Dienste fertig sind, müssen Sie die Änderungen aktivieren, bevor sie in Produktion gehen.

  • Klicken Sie auf das markierte Feld mit dem gelben Ausrufezeichen (!) in der oberen rechten Ecke, um die ausstehenden Änderungen anzuzeigen.
  • Klicke auf Auf ausgewählten Websites aktivieren.

Sie haben Docker-Dienste erfolgreich mit Checkmk überwacht!

Fazit

Das war also alles über Checkmk, ein Tool zur Infrastrukturüberwachung. Es ist ein sehr einfach zu bedienendes Tool, mit dem Sie versuchen müssen, Ihre Produktionsumgebungen zu überwachen. Ich empfehle den Versuch Checkmk-Free-Edition um Ihre Überwachung zu starten.