Alerte Prometheus qui spamme à cause d'une métrique flakey

laurent-gerard 03/04/2025
RÉSOLU
laurent-gerard
Auteur Actif
Avatar de laurent-gerard
laurent-gerard
Auteur Actif

Salut. J'ai une alerte prometheus qui devient folle. Elle est censée me prévenir quand un de nos services est en mode dégradé (mettons moins de 90% de succès sur les requêtes). Le problème c'est que parfois pour des petits pics de trafic ça descend à 85% pendant 30s puis ça remonte à 99%. Du coup l'alerte se déclenche et s'arrête en boucle ça spamme à mort


# règle d'alerte simplifiée
- alert: ServiceDegrade
  expr: (sum(rate(http_requests_total{job="my-service",status="2xx"}[5m])) / sum(rate(http_requests_total{job="my-service"}[5m]))) * 100 < 90
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: "Service MY-SERVICE a un taux de succès trop bas"
03/04/2025 à 02:34

8 commentaires

michelle58
Membre Actif
Avatar de michelle58
michelle58
Membre Actif

salut. le paramètre for: 5m est déjà là c bien. mais ton problème c que même sur 5m ça peut fluctuer. essaie de lisser un peu plus ta métrique. tu peux utiliser avg_over_time sur une période plus longue ou augmenter le for

03/04/2025 à 22:58
laurent-gerard
Auteur Actif
Avatar de laurent-gerard
laurent-gerard
Auteur Actif

j'avais pensé à augmenter le for mais 5min c'est déjà pas mal pour un service dégradé. si j'augmente à 10 ou 15min on va louper des trucs. avg_over_time c'est pour la moyenne sur une période c'est ça ?

04/04/2025 à 22:27
nicole46
Membre Actif Rédacteur Secouriste
Avatar de nicole46
nicole46
Membre Actif Rédacteur Secouriste

oui exactement. tu peux faire quelque chose comme avg_over_time(sum(rate(http_requests_total{...status="2xx"}[1m]))[15m:1m]) par exemple. ça te donne une moyenne mobile sur 15 minutes des taux de succès calculés sur 1 minute. ça va bien lisser les spikes

05/04/2025 à 22:00
laurent-gerard
Auteur Actif
Avatar de laurent-gerard
laurent-gerard
Auteur Actif

ah ok je vois le truc. donc je calcule ma métrique toutes les minutes et j'en fais une moyenne sur les 15 dernières minutes. ça paraît plus robuste en effet. le for: 5m reste bien après ça ?

06/04/2025 à 16:15
michelle58
Membre Actif
Avatar de michelle58
michelle58
Membre Actif

le for 5m oui ça reste bon. ça veut dire que même avec la moyenne lissée, il faut que le problème persiste 5 minutes avant de déclencher l'alerte. ça ajoute une couche de persistance

07/04/2025 à 14:32
laurent-gerard
Auteur Actif
Avatar de laurent-gerard
laurent-gerard
Auteur Actif

d'acc je vais tester ça je change l'expr. ça me parait bien plus solide pour éviter le flapping d'alertes. thx les gars

08/04/2025 à 12:00
nicole46
Membre Actif Rédacteur Secouriste
Avatar de nicole46
nicole46
Membre Actif Rédacteur Secouriste

pense aussi au threshold des fois il faut le monter un peu si c'est trop sensible. genre 88% au lieu de 90% pour être sûr que c'est un vrai souci

09/04/2025 à 11:24
laurent-gerard
Auteur Actif
Avatar de laurent-gerard
laurent-gerard
Auteur Actif

bon j'ai mis en place l'avg_over_time sur 15m. depuis plus de spam d'alertes et quand ça tombe c'est que c'est une vraie dégradation. nickel !

10/04/2025 à 06:48

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire