Articles techniques et exemples de code

Prophet Anomaly Detector

Détection d'anomalies sur métriques K8s avec Prophet et VictoriaMetrics.

31 December 2024
prophetvictoriametricskubernetes

Prophet Anomaly Detector

Les alertes sur seuils fixes ratent les anomalies subtiles. CPU à 60% un lundi matin ? Normal, tout le monde se connecte. CPU à 60% un dimanche à 3h ? Suspect.

Le problème : les métriques Kubernetes ont des patterns. Saisonnalité quotidienne, pics hebdomadaires, variations selon les déploiements. Un seuil statique ignore tout ça.

Ce script utilise Prophet pour modéliser ces patterns. Il apprend la “normale” sur 7 jours d’historique, puis détecte les écarts significatifs. Une hausse prévue n’alerte pas. Une hausse inattendue, si.

Métriques générées

Le script écrit trois métriques dans VictoriaMetrics :

  • prophet_prediction : valeur attendue selon le modèle
  • prophet_anomaly : 1 si anomalie détectée, 0 sinon
  • prophet_anomaly_score : distance aux bornes de confiance (plus c’est haut, plus c’est anormal)

Ces métriques permettent de créer des alertes intelligentes dans Grafana ou Alertmanager.

Lancer le détecteur

1
2
3
docker build -t prophet-anomaly .

docker run -e VM_READ_URL=http://vm:8428 prophet-anomaly

Par défaut, le script analyse CPU et mémoire par namespace sur 7 jours d’historique. On peut passer ses propres queries via QUERIES="cpu=sum(rate(cpu[5m]))".

Code source

📥 anomaly_detector.py — Script principal 📥 Dockerfile — Image Docker