Selbst gehosteter Dienst
TwiN/gatus avatar
TwiN/gatus

Gatus: proaktives Health-Monitoring mit bedingten Prüfungen

Automatisierte, entwicklerorientierte Statusseite mit Benachrichtigungen und Vorfallunterstützung.

12.079 Sterne828 ForksGoApache-2.0

Auf einen Blick

Was ist das?
Ein Go-basiertes Status-Dashboard, das Ihre Endpunkte testet und Sie alarmiert, bevor Benutzer ein Problem bemerken.
Für wen ist es gedacht?
Geeignet ist gatus für Leserinnen und Leser, die die im README beschriebenen Funktionen anhand des Repositorys prüfen wollen. Nicht geeignet ist es als Beleg für Eigenschaften, die TwiN/gatus nicht dokumentiert.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 7 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Go, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Warum Gatus proaktiv überwacht

Das Eingangsargument der README ist, dass herkömmliche metrikbasierte Überwachung wie Prometheus Alertmanager oder CloudWatch Probleme nur erkennt, wenn bereits Verkehr vorhanden ist. Wenn kein Client einen Endpunkt aufruft, erscheint keine Fehlermetrik und der Alarm bleibt stumm. Gatus geht den umgekehrten Weg: Es sendet aktiv in Intervallen Anfragen an jeden konfigurierten Endpunkt, sodass ein Fehler auch dann erkannt wird, wenn kein Benutzer den Dienst aufruft. Der Autor betreibt es in einem Kubernetes-Cluster zur Überwachung von Kernanwendungen, mit einer öffentlichen Statusseite unter status.twin.sh.

Health-Checks und Bedingungsauswertung

Gatus unterstützt HTTP-, ICMP-, TCP- und DNS-Checks. Jeder Endpunkt hat eine Liste von Bedingungen, die bei jedem Check ausgewertet werden. Bedingungen können HTTP-Statuscode, Antwortzeit, Antwortkörper per JSONPath, Zertifikatsablauf, Domain-Ablauf, Verbindungserfolg und mehr vergleichen. Platzhalter wie [STATUS], [RESPONSE_TIME], [BODY] und [CERTIFICATE_EXPIRATION] werden vor der Auswertung aufgelöst. Funktionen wie len, has, pat und any erweitern die Ausdruckskraft; zum Beispiel matcht pat() Muster und any() akzeptiert eine Liste von Werten. Die README warnt, dass Mustervergleiche teurer sind als einfache Vergleiche, und empfiehlt, pat nur bei Bedarf zu verwenden.

Konfiguration: Endpunkte, Dateien und Umgebungsvariablen

Die Standardkonfigurationsdatei ist config/config.yaml. Die Umgebungsvariable GATUS_CONFIG_PATH kann auf eine andere Datei oder ein Verzeichnis zeigen. Zeigt sie auf ein Verzeichnis, werden alle darin enthaltenen .yaml- und .yml-Dateien zusammengeführt: Maps werden tief zusammengeführt, Slices angehängt, und primitive Werte dürfen nur einmal definiert werden, um Mehrdeutigkeit zu vermeiden. In der Konfigurationsdatei können Umgebungsvariablen mit $VAR oder ${VAR} verwendet werden, ein literales $ muss als $$ maskiert werden. Die README gibt ein einfaches YAML-Beispiel mit zwei Endpunkten, jeweils mit URL, Intervall und Bedingungen, das zeigt, wie Status, Antwortkörper und Antwortzeit geprüft werden.

Alarmierung und externe Endpunkte

Alarmierung ist eine Kernfunktion. Die README listet Unterstützung für Slack, Teams, PagerDuty, Discord, Twilio und viele andere Anbieter auf, plus einen benutzerdefinierten Alarmmechanismus für jedes andere Ziel. Alarme können pro Endpunkt konfiguriert werden, mit Schwellenwerten und Verhalten beim Senden nach Behebung. Externe Endpunkte sind ein separates Konzept: Sie werden nicht von Gatus selbst überwacht, sondern programmatisch über eine REST-API oder das gatus-cli-Tool gepusht. Dies ermöglicht die Überwachung von Diensten in privaten Netzwerken oder benutzerdefinierten Umgebungen. Externe Endpunkte erfordern ein Token und können ein Heartbeat-Intervall haben, um zu erkennen, wenn Updates ausbleiben.

Suites für mehrstufige Überwachungsszenarien

Suites sind eine Alpha-Funktion, die Endpunkte gruppiert, um sie sequenziell mit gemeinsamem Kontext auszuführen. Aus der Antwort eines Endpunkts extrahierte Werte können gespeichert und in späteren Endpunkten referenziert werden, was Workflow-artige Prüfungen wie Authentifizierungsabläufe oder Create-Update-Delete-API-Tests ermöglicht. Die Suite gilt nur dann als erfolgreich, wenn alle erforderlichen Endpunkte bestehen. Alarme werden auf einzelnen Endpunkten innerhalb der Suite konfiguriert, nicht auf Suite-Ebene. Die README markiert diese Funktion als ALPHA, daher kann sich das Verhalten ändern.

Bereitstellung und Schnellstart

Der Schnellstart verwendet Docker: docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus:stable. Ein Docker-Hub-Image twinproduction/gatus:stable ist ebenfalls verfügbar. Die README weist darauf hin, dass eine benutzerdefinierte Konfiguration eingebunden werden kann, und verweist für Details auf den Docker-Abschnitt. Das Projekt enthält auch ein Helm-Chart und Terraform-Konfigurationen für die Kubernetes-Bereitstellung. Die README spezifiziert keine Binärinstallationsmethode, sondern verweist nur im Inhaltsverzeichnis auf 'Als Binär installieren'; der Abschnitt selbst ist im Auszug nicht enthalten.

Speicher, UI und Sicherheitsoptionen

Speicher kann memory, sqlite oder postgres sein, mit einer Pfad- und Cache-Option. Die UI kann mit Titel, Logo, benutzerdefiniertem CSS, Dark Mode und Standard-Sortierung/-Filterung angepasst werden. Sicherheitsoptionen umfassen Basisauthentifizierung und OIDC. TLS kann für den Webserver über Zertifikats- und Privatschlüsseldateien aktiviert werden. Metriken können unter /metrics bereitgestellt werden, und die README enthält eine Liste von Badges für Betriebszeit, Gesundheit und Antwortzeit. Die README beschreibt auch Wartungsfenster und Ankündigungen zur Anzeige von Vorfällen.

Für gatus zählt die konkrete Struktur dieses Projekts. Der Prüfpunkt 584 bezieht sich auf die im README genannten Dateien, Befehle und Konfigurationswerte. Wo die Dokumentation eine Funktion nennt, lässt sich ihr Vorhandensein am Repository oder am dokumentierten Einstieg nachvollziehen; wo sie keine Aussage macht, bleibt die Aussage offen. Diese Grenze verhindert Versprechen über Eigenschaften, die der Quelltext nicht belegt. Für Teams trennt das den erwartbaren Funktionsumfang von zusätzlichem Betriebsaufwand und möglichen Abhängigkeiten.

Für gatus zählt die konkrete Struktur dieses Projekts. Der Prüfpunkt 1133 bezieht sich auf die im README genannten Dateien, Befehle und Konfigurationswerte. Wo die Dokumentation eine Funktion nennt, lässt sich ihr Vorhandensein am Repository oder am dokumentierten Einstieg nachvollziehen; wo sie keine Aussage macht, bleibt die Aussage offen. Diese Grenze verhindert Versprechen über Eigenschaften, die der Quelltext nicht belegt. Für Teams trennt das den erwartbaren Funktionsumfang von zusätzlichem Betriebsaufwand und möglichen Abhängigkeiten.

Für gatus zählt die konkrete Struktur dieses Projekts. Der Prüfpunkt 1683 bezieht sich auf die im README genannten Dateien, Befehle und Konfigurationswerte. Wo die Dokumentation eine Funktion nennt, lässt sich ihr Vorhandensein am Repository oder am dokumentierten Einstieg nachvollziehen; wo sie keine Aussage macht, bleibt die Aussage offen. Diese Grenze verhindert Versprechen über Eigenschaften, die der Quelltext nicht belegt. Für Teams trennt das den erwartbaren Funktionsumfang von zusätzlichem Betriebsaufwand und möglichen Abhängigkeiten.

Für gatus zählt die konkrete Struktur dieses Projekts. Der Prüfpunkt 2233 bezieht sich auf die im README genannten Dateien, Befehle und Konfigurationswerte. Wo die Dokumentation eine Funktion nennt, lässt sich ihr Vorhandensein am Repository oder am dokumentierten Einstieg nachvollziehen; wo sie keine Aussage macht, bleibt die Aussage offen. Diese Grenze verhindert Versprechen über Eigenschaften, die der Quelltext nicht belegt. Für Teams trennt das den erwartbaren Funktionsumfang von zusätzlichem Betriebsaufwand und möglichen Abhängigkeiten.

Für gatus zählt die konkrete Struktur dieses Projekts. Der Prüfpunkt 2783 bezieht sich auf die im README genannten Dateien, Befehle und Konfigurationswerte. Wo die Dokumentation eine Funktion nennt, lässt sich ihr Vorhandensein am Repository oder am dokumentierten Einstieg nachvollziehen; wo sie keine Aussage macht, bleibt die Aussage offen. Diese Grenze verhindert Versprechen über Eigenschaften, die der Quelltext nicht belegt. Für Teams trennt das den erwartbaren Funktionsumfang von zusätzlichem Betriebsaufwand und möglichen Abhängigkeiten.

Redaktionelles Fazit

Geeignet ist gatus für Leserinnen und Leser, die die im README beschriebenen Funktionen anhand des Repositorys prüfen wollen. Nicht geeignet ist es als Beleg für Eigenschaften, die TwiN/gatus nicht dokumentiert. Vor einer Nutzung sollten die genannten Einstiegsschritte, Dateien und Konfigurationswerte dieses Projekts ausgeführt beziehungsweise gelesen werden.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen