Stiller-Fehler-Erkenner (Silent-Failure-Detector)
Erkennt den Fehler, den die Fehlerüberwachung nicht sieht: einen Prozess, der einfach verstummt. Keine Exception, kein Crash – er hört einfach auf zu emittieren, und du erfährst es erst Tage später.
Wann verwenden
- Du hast einen Strom von Emissions-Zeitstempeln (ein Logger, Heartbeat, Cron-Job, Agenten-Loop, Datenfeed) und eine erwartete Kadenz, und du willst wissen, ob er aufgehört hat.
- Du willst einen verifizierbaren, deterministischen Check, den du in eine tägliche Integritätsprüfung einbinden kannst.
Funktionsweise (ein Knopf)
SILENT, wenn das letzte Signal älter ist als expected_interval_sec * multiplier (Standard multiplier = 3.0 → etwa drei ausgelassene Schläge). Ein leerer Stream ist SILENT. Der Multiplier tauscht Erkennungslatenz (niedriger = echten Tod schneller erkennen) gegen Fehlalarme bei burstigen Kadenzen (höher = toleranter). Setze expected_interval_sec auf die typische Lücke des Streams; bei burstiger Kadenz setze es eher auf die p95-Lücke und dokumentiere dies.
Ausführen
echo '{"now": 1750000000, "expected_interval_sec": 60, "timestamps": [1749999940, 1749999990]}' > input.json
python3 detector.py input.json # exit 0 = gesund, exit 1 = still (alarmbereit)
Oder als Import: from detector import detect; detect(now, timestamps, expected_interval_sec, multiplier=3.0).
Ausgabe
{ "status": "silent", "reason": "last signal 19880s old vs threshold 180s",
"last_age_sec": 19880, "threshold_sec": 180.0 }
Bekannte Grenzen (gemessen, nicht behauptet – siehe BENCHMARK.md)
Auf einem gelabelten Satz von 105 Fällen erreicht es 83,8% Genauigkeit (TPR 81,8% / TNR 86,0%). Jeder Fehler liegt im 2–4-fachen 'Graubereich' nahe der Schwelle; klare Fälle sind 100% korrekt. Zwei ehrliche Fehlermodi: (1) Fehlalarme bei lebendigen, aber gerade langsamen Streams, die zufällig die 3×-Schwelle überschreiten; (2) eine Erkennungslatenz von einem Fenster bei einem Stream, der gerade gestorben ist. Passe den multiplier für deine Latenz-/Fehlalarm-Präferenz an. Die Evaluierung ist reproduzierbar – führe sie erneut aus und überprüfe die Zahlen selbst.