In einer Zeit, in der IT-Sicherheit und Systemüberwachung immer wichtiger werden, stehen viele Administratoren vor der Herausforderung, ihre Server-Landschaft systematisch zu überwachen und Performance-Probleme frühzeitig zu erkennen. Checkmk bietet hier eine leistungsstarke Open-Source-Lösung, die speziell für kleine bis mittelständische Unternehmen entwickelt wurde. Die manuelle Überwachung von Systemen über mehrere Server, Cloud-Instanzen und Netzwerkkomponenten hinweg ist zeitaufwendig, fehleranfällig und kostet wertvolle Ressourcen. Genau hier setzt Checkmk an – pünktlich zum Nikolaustag eine Anleitung für euch, wie es sich auch von @Brthld in der Wunschliste gewünscht wurde.
Checkmk ist eine moderne Monitoring-Plattform, die entwickelt wurde, um die Überwachung von Infrastruktur und Applikationen über mehrere Server, Cloud-Provider und Container hinweg zu vereinfachen. Es richtet sich an Systemadministratoren, IT-Dienstleister und DevOps-Teams, die eine zentrale Übersicht über den Gesundheitsstatus ihrer gesamten IT-Infrastruktur benötigen. Die Stärken von Checkmk liegen in der einfachen Einrichtung und der übersichtlichen Web-Oberfläche. Das System unterstützt hybride Infrastrukturen mit über 2.000 herstellerseitig gewarteten Monitoring-Plugins und bietet automatische Discovery von IT-Komponenten, zentralisierte Überwachung und detaillierte Reporting-Funktionen.
Durch die aktive Entwicklung und moderne verteilte Architektur bleibt Checkmk stets auf dem neuesten Stand der Technik und skaliert nahezu unbegrenzt – von mittelgroßen bis zu großen Enterprise-Umgebungen. Mit Checkmk haben Sie Ihre gesamte IT-Infrastruktur im Griff und können sich auf das konzentrieren, was wirklich zählt: Die Stabilität und Performance Ihrer Systeme sowie die Sicherheit Ihrer Infrastruktur. Ein Nikolaus-Geschenk für alle, die ihre IT intelligent, automatisiert und skalierbar überwachen möchten.
| Datum | Änderungen |
|---|---|
| 07.12.2025 | Kapitel 3.1, Kapitel 5 Agent hinzufügen in CheckMK |
| 06.12.2025 | Anleitung erstellt |
1. Grundvoraussetzung
Diese Anleitung wurde getestet mit Traefik v3.6.1 und Docker v29.0.0 auf Debian Trixxie sollte aber auch auf Ubuntu funktionieren. Alle Befehle werden als Root-Benutzer ausgeführt.
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
- Root oder Sudo-Zugriff
2. Verzeichnisse anlegen
mkdir -p /opt/containers/checkmk/data chmod -R 777 /opt/containers/checkmk/data cd /opt/containers/checkmk
3. Dateien anlegen
# .env Anlegen cat > .env << 'EOF' CMK_PASSWORD=DeinSuperSicheresPasswort123! EOF
# docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
checkmk:
image: "checkmk/check-mk-raw:2.4.0-latest"
container_name: "checkmk"
restart: always
env_file:
- .env
volumes:
- checkmk-sites:/omd/sites
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
ports:
- "8000:8000" # TLS-Registrierung
- "6556:6556" # Agent-Port für Selbstüberwachung
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.checkmk.entrypoints=websecure"
- "traefik.http.routers.checkmk.rule=Host(`checkmk.snxrcs.me`)"
- "traefik.http.services.checkmk.loadbalancer.server.port=5000"
- "traefik.http.routers.checkmk.tls=true"
- "traefik.http.routers.checkmk.tls.certresolver=http_resolver"
- "traefik.http.routers.checkmk.middlewares=default@file"
# ← NEU: TCP-Router für Agent-Port 8000 (TLS-Registrierung)
- "traefik.tcp.routers.checkmk-agent-8000.rule=HostSNI(`checkmk.snxrcs.me`)"
- "traefik.tcp.routers.checkmk-agent-8000.entrypoints=agent-tcp"
- "traefik.tcp.routers.checkmk-agent-8000.tls.passthrough=true"
- "traefik.tcp.routers.checkmk-agent-8000.service=checkmk-agent-8000"
- "traefik.tcp.services.checkmk-agent-8000.loadbalancer.server.port=8000"
# ← NEU: TCP-Router für Agent-Port 6556 (Agent-Daten)
- "traefik.tcp.routers.checkmk-agent-6556.rule=HostSNI(`checkmk.snxrcs.me`)"
- "traefik.tcp.routers.checkmk-agent-6556.entrypoints=websecure"
- "traefik.tcp.routers.checkmk-agent-6556.tls.passthrough=true"
- "traefik.tcp.routers.checkmk-agent-6556.service=checkmk-agent-6556"
- "traefik.tcp.services.checkmk-agent-6556.loadbalancer.server.port=6556"
networks:
- proxy
volumes:
checkmk-sites:
networks:
proxy:
external: true
EOF
3.1 Traefik anpassen
Unter dem Punkt entryPoints den agent-tcp Port hinzufügen:
# /opt/containers/traefik-crowdsec-stack/data/traefik/traefik.yml
entryPoints:
ping:
address: ':88'
web:
address: ':80'
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ':443'
http:
middlewares:
#- default@file
- traefik-bouncer@file
agent-tcp: # ← Für Checkmk Agent-Registrierung
address: ':8000'
Anschließend den Traefik-Stack neustarten:
cd /opt/containers/traefik-crowdsec-stack/ docker compose up -d --force-recreate
4. Starten von CheckMK
cd /opt/containers/checkmk/ docker compose up -d
Nun wollen wir CheckMK einmal starten und warten ca. 2 -3 Minuten. =) Prüfen können wir das ganze in dem wir uns einmal die Logs anschauen.
docker compose logs -f checkmk
Die fertige Ausgabe des Logs sollte dann ungefähr so aus sehen.
checkmk | ### CREATING SITE 'cmk' checkmk | Generating configuration for core (type nagios)... checkmk | Precompiling host checks...OK checkmk | Adding /opt/omd/sites/cmk/tmp to /etc/fstab. checkmk | Going to set TMPFS to off. checkmk | Updating core configuration... checkmk | Executing post-create script "01_create-sample-config.py"...OK checkmk | Executing post-create script "02_cmk-compute-api-spec"...OK checkmk | Executing post-create script "03_message-broker-certs"...OK checkmk | Adding /opt/omd/sites/cmk/tmp to /etc/fstab. checkmk | Going to set TMPFS to off. checkmk | Skipping Apache restart. checkmk | Created new site cmk with version 2.4.0p17.cre. checkmk | checkmk | The site can be started with omd start cmk. checkmk | The default web UI is available at http://15bdd1935a38/cmk/ checkmk | checkmk | The admin user for the web applications is cmkadmin with password: DeinSuperSicheresPasswort123! checkmk | For command line administration of the site, log in with 'omd su cmk'. checkmk | After logging in, you can change the password for cmkadmin with 'cmk-passwd cmkadmin'. checkmk | checkmk | ### STARTING XINETD checkmk | * Starting internet superserver xinetd checkmk | ...done. checkmk | ### STARTING SITE checkmk | Starting agent-receiver...OK checkmk | Starting mkeventd...OK checkmk | Starting rrdcached...OK checkmk | Starting redis...OK checkmk | Starting npcd...OK checkmk | Starting automation-helper...OK checkmk | Starting ui-job-scheduler...OK checkmk | Starting nagios...OK checkmk | Starting apache...OK checkmk | Starting crontab...OK checkmk | ### STARTING CRON checkmk | ### CONTAINER STARTED
Nun Prüfen wir einmal ob die Ports für die Agent Registrierung nach extern Verfügbar sind. Diese sind ebenfalls auch in der Firewall freigegeben werden.
root@XXXXX:/opt/containers/checkmk# nc -zv checkmk.euredomain.de 8000 Connection to checkmk.euredomain.de (1.2.3.4) 8000 port [tcp/*] succeeded! root@XXXX:/opt/containers/checkmk# nc -zv checkmk.euredomain.de 6556 Connection to checkmk.euredomain.de (1.2.3.4) 6556 port [tcp/*] succeeded!
Nun können wir den ersten Agent hinzufügen und in dem Beispiel nehme ich CheckMK selbst. =)
5. Agent hinzufügen
So nun fügen wir den ersten Agent hinzu.

Save & run service discovery und anschließend auf Accept all

Nun klicken wir auf das gelbe Ausrufezeichen oben rechts und der letzte Step ist dann auf Button “Activate on selected site” zu drücken.

🎯 Zusammenfassung

Einloggen könnt ihr euch mit dem User cmkadmin und mit eurem gewählten Passwort in der .env in dem Fall DeinSuperSicheresPasswort123!

Dashboard nachdem hinzufügen des Agents

Die Anleitung ist nur Rudimentär und sollte nicht Produktiv eingesetzt werden. Ich rate euch dazu einmal die offizielle Dokumentation anzuschauen. In diesem Sinne ein paar schöne Adventstage. =)

Danke. Spannend wäre jetzt noch sowas wie: Wie installiere ich ein Agent (z.B. auch auf dem Docker-Host selbst) und welche Ports muss ich in der Firewall freigeben? Daran ist es bei mir am Ende etwas gescheitert.