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.
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.
geekflare@geekflare:~$ 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
.
geekflare@geekflare:~$ 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.
geekflare@geekflare:~$ 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.
geekflare@geekflare:~$ 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.
Sobald Sie sich angemeldet haben, erscheint das „Haupt-Dashboard“. Es ist leer, weil Sie noch keine Hosts hinzugefügt haben.
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.
geekflare@geekflare:~$ 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.
- Klicken Sie auf „Host hinzufügen“.
- Geben Sie nun den Hostnamen und die IP-Adresse ein und klicken Sie auf „Speichern & zur Dienstkonfiguration“.
- Sobald Sie das tun, startet Checkmk automatisch die Diensterkennung.
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.
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.
Ich habe vier Dienste deaktiviert, sodass ich sie auf der Registerkarte "Dienste deaktivieren" sehen kann.
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.
- Klicken Sie 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.