Gatus ist ein leistungsstarkes, Open-Source-Tool für Service-Monitoring und Health-Checks. In dieser Anleitung zeige ich dir, wie du Gatus mit Docker Compose einrichtest und konfigurierst, um deine Dienste zu überwachen.
Was ist Gatus?#
Gatus ist ein modernes Monitoring-Tool, das sich durch folgende Eigenschaften auszeichnet:
- Einfache Konfiguration über YAML-Dateien
- Web-Interface für die Überwachung des Service-Status
- Flexible Endpunkt-Tests (HTTP, TCP, ICMP, DNS)
- Benachrichtigungen über verschiedene Kanäle (Slack, Discord, Email, etc.)
- Minimal Resource Usage - perfekt für Docker-Deployments
Docker Compose Setup#
Hier ist eine Docker Compose-Konfiguration für Gatus:
services:
gatus:
image: twinproduction/gatus:v5.27.0@sha256:5091320d752756d7ac0a094d26ac38eb8216d7ed5857642b305522d1c6641f72
container_name: gatus
restart: always
volumes:
- /opt/docker/gatus/config:/config
- /opt/docker/gatus/data:/data/
expose:
- 8080
networks:
- proxy
networks:
proxy:
external: true
Gatus-Konfiguration#
Verzeichnisstruktur erstellen#
Zuerst erstellen wir die erforderlichen Verzeichnisse:
sudo mkdir -p /opt/docker/gatus/{config,data}
sudo chown -R $USER:$USER /opt/docker/gatus
Basis-Konfiguration (config.yaml)#
Erstelle die Hauptkonfigurationsdatei /opt/docker/gatus/config/config.yaml:
# Allgemeine Einstellungen
web:
port: 8080
# Datenbank-Konfiguration (SQLite)
storage:
type: sqlite
path: /data/data.db
# UI-Konfiguration
ui:
title: "Service Status Dashboard"
header: "Service Monitoring"
# Endpunkte zum Überwachen
endpoints:
- name: "Hauptwebsite"
url: "https://deine-domain.de"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
- "[BODY] == pat(*Willkommen*)"
- name: "API Service"
url: "https://api.deine-domain.de/health"
interval: 60s
conditions:
- "[STATUS] == 200"
- "[BODY].status == UP"
- name: "Database Connection"
url: "tcp://db.deine-domain.de:5432"
interval: 30s
conditions:
- "[CONNECTED] == true"
- "[RESPONSE_TIME] < 500"
- name: "DNS Check"
url: "1.1.1.1"
dns:
query-name: "deine-domain.de"
query-type: "A"
interval: 60s
conditions:
- "[DNS_RCODE] == NOERROR"
Erweiterte Konfigurationsoptionen#
Benachrichtigungen einrichten#
Füge Slack-Benachrichtigungen hinzu:
alerting:
slack:
webhook-url: "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
default-alert:
description: "Service Alert"
send-on-resolved: true
failure-threshold: 3
success-threshold: 2
Authentifizierung aktivieren#
Für geschützte Dashboards:
web:
port: 8080
security:
basic:
username: "admin"
password-sha512: "YOUR_SHA512_HASHED_PASSWORD"
Passwort-Hash generieren:
echo -n 'deinpasswort' | sha512sum
Service starten#
1. Container starten#
docker compose up -d
2. Logs überprüfen#
docker compose logs -f
3. Service testen#
Öffne deinen Browser und navigiere zu http://localhost:8080, um auf das Gatus-Dashboard zuzugreifen.
Monitoring Best Practices#
Sinnvolle Check-Intervalle#
- Kritische Services: 30s - 1min
- Weniger kritische Services: 2-5min
- DNS/Infrastruktur: 1-2min
Condition-Beispiele#
# HTTP Status und Response Zeit
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
# JSON Response validieren
conditions:
- "[STATUS] == 200"
- "[BODY].status == healthy"
- "[BODY].database.connected == true"
# Header überprüfen
conditions:
- "[STATUS] == 200"
- "[HEADERS].Content-Type == application/json"
# Certificate Monitoring
conditions:
- "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 72h"
Wartung und Updates#
Container aktualisieren#
# Neue Version pullen
docker compose pull
# Service neu starten
docker compose up -d
Backup der Daten#
# Datenbank sichern
cp /opt/docker/gatus/data/data.db /backup/gatus-$(date +%Y%m%d).db
# Konfiguration sichern
tar -czf /backup/gatus-config-$(date +%Y%m%d).tar.gz /opt/docker/gatus/config/
Troubleshooting#
Häufige Probleme#
Problem: Service erreichbar, aber Checks schlagen fehl
# Netzwerk-Konnektivität testen
docker exec gatus ping deine-domain.de
# DNS-Auflösung prüfen
docker exec gatus nslookup deine-domain.de
Problem: Hohe Response-Zeiten
- Überprüfe die Netzwerk-Latenz
- Reduziere Check-Häufigkeit bei weniger kritischen Services
- Verwende lokale DNS-Server
Debugging#
# Detaillierte Logs aktivieren
docker compose logs -f | grep -i error
# Container-Status prüfen
docker compose ps gatus
Fazit#
Mit dieser Konfiguration hast du ein robustes Monitoring-System, das:
- Alle wichtigen Services überwacht
- Bei Ausfällen benachrichtigt
- Über ein Web-Interface verfügbar ist
- Minimal Ressourcen verbraucht
- Einfach zu warten ist
Gatus eignet sich perfekt für kleinere bis mittlere Infrastrukturen und bietet eine gute Alternative zu komplexeren Monitoring-Lösungen wie Prometheus/Grafana, wenn du ein einfaches, aber effektives Status-Dashboard benötigst.

