Monitoring mit Gatus
Monitoring mit Gatus. Umfangreicher als Uptime-Kuma. Einfacher als Zabbix ๐
In der heutigen digitalen Landschaft ist das Monitoring von IT-Systemen und -Diensten unerlรคsslich, um eine hohe Verfรผgbarkeit und Zuverlรคssigkeit zu gewรคhrleisten. Gatus ist ein modernes Monitoring-Tool, das speziell entwickelt wurde, um die Verfรผgbarkeit von Webdiensten und Netzwerkdiensten zu รผberwachen. Mit seiner flexiblen Architektur und einer Vielzahl von Prรผfmethoden bietet Gatus eine umfassende Lรถsung fรผr DevOps-Teams, die kritische Anwendungen und Infrastrukturen betreuen. Die Bedeutung von Monitoring kann nicht genug betont werden: Es ermรถglicht nicht nur die frรผhzeitige Erkennung von Problemen, sondern unterstรผtzt auch eine proaktive Wartung der Systeme. In diesem Artikel werde ich die Vorteile von Gatus im Vergleich zu Uptime Kuma beleuchten.
รberblick รผber Gatus
Gatus bietet eine Vielzahl von Funktionen, die es zu einer leistungsstarken Wahl fรผr das Monitoring machen. Dazu gehรถren:
- Flexible Gesundheitschecks: Gatus ermรถglicht es Benutzern, benutzerdefinierte Bedingungen fรผr Gesundheitschecks festzulegen, was eine prรคzise รberwachung der Dienste gewรคhrleistet.
- Umfangreiche Alerting-Mรถglichkeiten: Die integrierte Alerting-Funktionalitรคt informiert Administratoren sofort รผber Probleme und ermรถglicht eine schnelle Reaktion.
- Einfache Integration: Gatus lรคsst sich nahtlos in bestehende DevOps-Workflows integrieren.
Die Architektur von Gatus basiert auf einem leichtgewichtigen Ansatz, der es ermรถglicht, sowohl lokal als auch in der Cloud betrieben zu werden. Die Konfiguration erfolgt รผber einfache YAML-Dateien, was die Implementierung und Wartung erheblich vereinfacht.
Das Dashboard von Gatus sieht dem von Uptime-Kuma sehr รคhnlich:

Dieser Check wurde entsprechend der Doku eingerichtet:
endpoints:
- name: Awtrix
group: LED Devices
url: http://awtrix1
interval: 1m
conditions:
- "[STATUS] == 200"
- "[CONNECTED] == true"Alerting
Da ich mir einen ntfy-Server aufgebaut habe, kann ich die Alarme darรผber signalisieren lassen. In der config.yml von Gatus trage ich einfach meinen Server ein:
alerting:
ntfy:
url: "https://push.meine-domain.de"
token: "tk_n36gysc9kjjggzhiizgcjo64dgjoi53ui2w"
topic: "selfhosted"
priority: 3
tags:
- warning
- gatusSo kann ich den einzelnen Endpoints mitgeben, wann ein Alarm erfolgen soll:
alerts:
- type: ntfy
enabled: true
failure-threshold: 3
success-threshold: 2
send-on-resolved: trueWas ist der Vorteil gegenรผber Uptime-Kuma?
Uptime-Kuma sieht schon recht schick aus und lรครt sich sehr leicht konfigurieren:

Ich hatte jedoch das Bedรผrfnis, meinen Mailserver genauer zu รผberwachen, insbesondere hinsichtlich der SSL-Zertifikate. Es kam in der Vergangenheit immer wieder vor, dass die Zertifikate nicht rechtzeitig erneuert wurden, was zu mรถglichen Sicherheitslรผcken fรผhren kรถnnte. Um solche Probleme frรผhzeitig zu erkennen und rechtzeitig handeln zu kรถnnen, war es mir wichtig, eine zuverlรคssige รberwachung fรผr die SSL-Zertifikate einzurichten.
Mit Uptime Kuma ist es jedoch nicht mรถglich, SSL-Zertifikate auรerhalb von regulรคren Webseiten zu รผberwachen, was in meinem Fall, da es um einen Mailserver geht, leider eine Einschrรคnkung darstellt.
Wie setzt man Gatus auf?
Man kann auch diesen Container wieder in meine Umgebung einbauen, wenn man das Monitoring aus dem Internet betrachten mรถchte. In diesem Fall habe ich einfach meinem docker-compose.yml-File folgenden Abschnitt hinzugefรผgt:
gatus:
container_name: gatus
image: twinproduction/gatus:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
ports:
- 3002:8080
volumes:
- ./gatus/config:/config
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"Dabei bedeuten die Parameter folgendes:
- Container-Name und Image
container_name: Der Container wird im Docker-Umfeld alsgatusbenannt. Dies ist hilfreich fรผr die Organisation und Verwaltung von Containern.image: Gibt das Docker-Image an, das fรผr den Container verwendet werden soll. In diesem Fall wird das neueste Image vontwinproduction/gatusverwendet.
- Umgebungsvariablen
PUIDundPGID: Diese Variablen definieren die Benutzer- und Gruppen-ID, unter der der Container ausgefรผhrt wird. Der Wert 1000 ist oft der Standardbenutzer-ID auf Unix-Systemen und wird hier genutzt, um Berechtigungsprobleme mit Volumes und Dateisystemen zu vermeiden.TZ: Diese Variable setzt die Zeitzone des Containers aufEurope/Berlin.
- Ports
Ports: Leitet den Port8080des Containers auf den Port3002des Hosts weiter. Damit ist die Gatus-Oberflรคche oder API auf Port3002des Host-Systems erreichbar.
- Volumes
Volumes: Verbindet ein lokales Verzeichnis (./gatus/config) mit dem Verzeichnis/configim Container. Dadurch wird die Konfiguration des Gatus-Containers von auรerhalb gespeichert und bei Container-Neustarts beibehalten.
- Neustart-Strategie
restart: Der Container wird automatisch neu gestartet, falls er unerwartet beendet wird, auรer er wurde manuell gestoppt (unless-stopped).
- Labels
Labels: Mit diesem Label wird die Integration mit Watchtower aktiviert. Watchtower ist ein Docker-Dienst, der Container-Images automatisch auf Updates prรผft und aktualisiert.
Configfile vorbereiten
Das File ./gatus/config/config.yml muss existieren und einen minimalen Inhalt haben, da gatus sonst nicht starten kann. Ein einfacher Start wรคre:
# Global configuration
metrics: true # Enable metrics endpoint
debug: false # Disable debug mode for productionChecks werden dann, wie oben beschrieben, hinzugefรผgt.
Ein simples docker-compose up -d startet dann den Container und die Oberflรคche ist unter http://[Container-IP]:3002 zu erreichen.
Fazit
Mit Gatus habe ich schlieรlich ein Tool gefunden, das deutlich mehr Funktionen bietet und es mir ermรถglicht, meine Server umfassender zu รผberwachen. Im Vergleich zu anderen Lรถsungen erlaubt Gatus eine prรคzisere Kontrolle und bietet erweiterte Optionen, um verschiedene Aspekte meiner Serverinfrastruktur โ einschlieรlich der SSL-Zertifikate โ im Detail zu รผberwachen. So kann ich sicherstellen, dass potenzielle Probleme frรผhzeitig erkannt und rechtzeitig behoben werden, was die Sicherheit und Stabilitรคt meiner Systeme erheblich verbessert.