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
- gatus
So 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: true
Was 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 alsgatus
benannt. 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/gatus
verwendet.
- Umgebungsvariablen
PUID
undPGID
: 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 Port8080
des Containers auf den Port3002
des Hosts weiter. Damit ist die Gatus-Oberfläche oder API auf Port3002
des Host-Systems erreichbar.
- Volumes
Volumes
: Verbindet ein lokales Verzeichnis (./gatus/config
) mit dem Verzeichnis/config
im 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 production
Checks 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.