Uptime-Checks¶
Uptime-Checks erlauben SLAtus, Ausfälle automatisch zu erkennen. Eine Komponente mit aktivierten Checks wird per HTTP abgefragt, und das Ergebnis kann ihren Status setzen, ohne dass jemand eingreifen muss.
Konfiguration¶
Die Konfiguration erfolgt je Komponente in der Admin-Oberfläche unter Services → (Service) in der Karte Uptime check. Rollen: admin und service_manager.
| Einstellung | Spalte | Bedeutung |
|---|---|---|
| Enabled | check_enabled |
Schaltet den Checker für diese Komponente ein |
| URL | check_url |
Ziel eines HTTP-GET-Requests |
| Check interval (seconds) | check_interval_seconds |
Abstand zwischen zwei Checks, 30 bis 86 400 Sekunden, Standard 60 |
| Failure threshold | check_failure_threshold |
Anzahl aufeinanderfolgender Fehler, bevor ein Ausfall gesetzt wird |
| Result evaluation | check_result_type |
status_200: Erfolg bedeutet eine 2xx-Antwort. body_contains: Der Antworttext muss check_search_string enthalten, unabhängig vom Status. Ist der Suchtext leer, gilt wieder die 2xx-Regel. |
| Outage severity | check_outage_severity |
major_outage (Standard) oder partial_outage |
| Degraded response time limit (ms) | check_degraded_threshold_ms |
Wenn gesetzt (Standard: aus), setzt eine erfolgreiche, aber langsamere Antwort degraded_performance |
Mit dem Button Test now wird ein Check sofort einmalig ausgeführt. Das ist ein Diagnosewerkzeug und ändert weder den Check-Zustand noch die Historie.
Pausieren¶
Mit Pause lässt sich der Check für eine feste Dauer anhalten, in der Oberfläche 15 Minuten, 1 Stunde, 4 Stunden oder 24 Stunden (serverseitig höchstens 7 Tage, check_paused_until). Die Karte zeigt dann „Paused until …“. Resume now hebt die Pause sofort auf. Pausierte Komponenten überspringt der Sweep.
Ablauf eines Sweeps¶
Jede Minute läuft der Job uptime-check-sweep (lib/notifications/uptime-check.ts). Er prüft alle aktivierten, nicht pausierten Komponenten, deren Intervall seit dem letzten Check abgelaufen ist:
- Ein HTTP-GET mit 10 Sekunden Timeout wird ausgeführt. Die Antwortzeit wird immer gemessen.
- Das Ergebnis wird mit der Antwortzeit in
uptime_check_resultsgespeichert. - Die Cache-Felder der Komponente
last_checked_at,last_check_statusundlast_check_response_time_mswerden aktualisiert. - Fehler: Aufeinanderfolgende Fehler werden gezählt. Ist die Schwelle erreicht, setzt der Sweep den konfigurierten Ausfall-Schweregrad über
applyComponentStatusChange. Die übliche Benachrichtigung wird gesendet. Das gilt auch, wenn die Komponente von Hand auf einen anderen Status gesetzt wurde, zum Beispiel „In Wartung“; entspricht der manuelle Status schon dem Schweregrad, bleibt er unverändert. Das gilt auch für einen von Hand erhöhten Ausfall-Schweregrad: bleibt der Check fehlgeschlagen, setzt der Sweep den konfigurierten Schweregrad einmal erneut (danach bleibt er stabil). Erholung und Degradation fassen einen von Hand geänderten Status dagegen nicht an. Hat der Checker zuvor selbstdegraded_performancegesetzt, eskaliert er so zum Ausfall. Der Sweep merkt sich incheck_set_status, welchen Status er zuletzt gesetzt hat. - Erfolg: Wurde der aktuelle Status vom Checker selbst gesetzt (Ausfall oder Degradation) und ist die Antwort schnell genug, setzt der Sweep
operational. Ist die Antwort langsamer als die Schwelle für Degradation, setzt erdegraded_performance, aber nur wenn die Komponenteoperationalist oder der Checker den Ausfall selbst gesetzt hat. Ein manuell gesetzter Status bleibt dabei unverändert.
Schutz vor dem Überschreiben manueller Änderungen¶
Der Sweep merkt sich in check_set_status, welchen Status er zuletzt gesetzt hat. Der Checker stellt eine Komponente nur wieder her und stuft sie nur auf degraded_performance herab, wenn er den Status selbst gesetzt hat oder die Komponente operational ist — der aktuelle Status muss also noch genau dem gespeicherten Wert entsprechen, auch wenn die Ausfall-Severity inzwischen geändert wurde. Ändert ein Mensch den Status, endet die Zuständigkeit des Checkers und check_set_status wird beim nächsten Check zurückgesetzt. Ein manuell gesetzter Schweregrad bleibt bestehen, bis ein Mensch ihn ändert. Ausnahme ist ein Ausfall: Erreichen die Fehlschläge die Schwelle, setzt der Sweep den konfigurierten Ausfall-Schweregrad.
Historie und Anzeige¶
- Unter Services → (Service) → View history (
/admin/services/[id]/uptime-history) stehen die letzten 50 Check-Ergebnisse mit Zeitpunkt, Ergebnis und Fehlermeldung. - Unter Service Status zeigt ein farbiges Symbol je Service das Ergebnis und die Antwortzeit des letzten Checks.
Aufbewahrung¶
Ergebnisse werden 30 Tage lang gespeichert. Der Job uptime-check-retention löscht ältere Zeilen täglich um 03:00.
Betriebshinweise¶
- Der Checker benötigt den Worker-Prozess. Ohne ihn laufen keine Checks.
- Checks werden vom Server aus ausgeführt, auf dem der Worker läuft. Eine URL, die nur von außen erreichbar ist, braucht einen Worker mit Zugang dorthin oder einen externen Monitor, der die Öffentliche API aufruft.
- Automatische Checks und manuelle Änderungen können dieselbe Komponente betreffen. Der zentrale Einstiegspunkt serialisiert sie, die letzte Änderung gewinnt.