Que fait détecteur-silence ?
Détecte les pannes que la surveillance des erreurs ne voit pas : un processus qui devient silencieux. Pas d'exception, pas de plantage — il cesse simplement d'émettre, et vous le découvrez des jours plus tard.
Quand l'utiliser
- Vous avez un flux d'horodatages d'émission (un logger, heartbeat, cron job, boucle d'agent, flux de données) et une cadence attendue, et vous voulez savoir s'il s'est arrêté.
- Vous souhaitez une vérification déterministe et reproductible à intégrer dans une inspection d'intégrité quotidienne.
Comment ça marche (un paramètre)
SILENCIEUX lorsque le signal le plus récent est plus ancien que expected_interval_sec * multiplier (par défaut multiplier = 3.0 → environ trois battements manqués). Un flux vide est SILENCIEUX. Le multiplicateur fait un compromis entre latence de détection (plus bas = détecter une vraie mort plus vite) et fausses alarmes sur les cadences irrégulières (plus haut = plus tolérant). Définissez expected_interval_sec sur l'écart typique du flux ; si la cadence est irrégulière, rapprochez-le de l'écart p95 et mentionnez-le.
Exécution
echo '{"now": 1750000000, "expected_interval_sec": 60,
"timestamps": [1749999940, 1749999990]}' > input.json
python3 detector.py input.json # exit 0 = sain, exit 1 = silencieux (alarmant)
Ou importez-le : from detector import detect; detect(now, timestamps, expected_interval_sec, multiplier=3.0).
Sortie
{ "status": "silent", "reason": "last signal 19880s old vs threshold 180s",
"last_age_sec": 19880, "threshold_sec": 180.0 }
Limites connues (mesurées, non annoncées — voir BENCHMARK.md)
Sur un jeu étiqueté de 105 cas, il obtient 83,8% de précision (TPR 81,8% / TNR 86,0%). Toutes les erreurs se situent dans la "zone grise" 2–4× près du seuil ; les cas clairs sont corrects à 100%. Deux modes de défaillance honnêtes : (1) fausses alarmes sur des flux vivants mais momentanément lents qui ont dépassé 3× par hasard ; (2) une latence de détection d'une fenêtre sur un flux qui vient de mourir. Ajustez multiplier selon votre compromis latence/fausses alarmes. L'évaluation est reproductible — relancez-la et vérifiez les chiffres vous-même.