prometheus alerte flapping sur un service pas si critique

leon92 12/08/2024
RÉSOLU
leon92
Auteur Actif Secouriste
Avatar de leon92
leon92
Auteur Actif Secouriste

yo la team j'ai un problème d'alert fatigue avec prometheus. on a une alerte sur le healthcheck d'un service interne (genre un worker qui fait du traitement batch) et elle passe son temps à flapper on/off toutes les 5min. le service est pas down complètement juste il met du temps à répondre parfois quand y'a des pics de charge. mais du coup on est spammé de notifs et on rate les vraies alertes. comment on gère ça proprement ?

12/08/2024 à 18:11

6 commentaires

lucie-perret
Membre Actif
Avatar de lucie-perret
lucie-perret
Membre Actif

alors pour le flapping c'est le grand classique. t'as plusieurs options. la première c'est d'utiliser l'option FOR de ton alert rule. genre si l'alerte est ON depuis moins de 5min tu la déclenches pas. ça lisse les spikes rapides.


- alert: myflappingservice
  expr: up{job="my-worker"} == 0
  for: 5m # l'alerte doit être vraie pendant 5 minutes avant de se déclencher
  labels:
    severity: warning
  annotations:
    summary: "my worker is down for too long"
13/08/2024 à 15:52
isaac92
Membre Actif
Avatar de isaac92
isaac92
Membre Actif

ouais le FOR c la base. si ça suffit pas tu peux aussi jouer sur les seuils. si ton service est lent mais pas down, ptete que ton healthcheck est trop agressif. tu peux le passer de 1s à 5s pour avoir une meilleure fenêtre. ou si c une métrique, ajuste le seuil de déclenchement.

14/08/2024 à 12:55
carpentier-aurore
Membre Actif Secouriste
Avatar de carpentier-aurore
carpentier-aurore
Membre Actif Secouriste

y'a aussi le concept de silences dans alertmanager si c'est un problème connu et temporaire. tu peux faire un silence de X heures. mais c'est pas une solution long terme. pour le long terme il faut des bons seuils et un bon FOR.

15/08/2024 à 09:00
leon92
Auteur Actif Secouriste
Avatar de leon92
leon92
Auteur Actif Secouriste

le FOR j'y avais pensé mais je savais pas trop quelle durée. 5m ça me semble pas mal. pour les seuils le souci c'est que le service est vraiment down quand le healthcheck fail même si c'est pour 30s. c'est la nature de ce worker batch. l'idée c'est de notifier si il est en carafe longtemps pas juste un petit hoquet.

16/08/2024 à 06:09
manon-leroux
Membre Actif
Avatar de manon-leroux
manon-leroux
Membre Actif

dans ce cas un truc qu'on fait c'est une combinaison FOR et un compteur de défaillances. plutot que d'alerter si c'est DOWN, tu alertes si COUNTER_OF_FAILURES_PER_MINUTE > X pendant Y minutes. ça permet de tolérer quelques drops mais pas un flot constant.

17/08/2024 à 03:59
leon92
Auteur Actif Secouriste
Avatar de leon92
leon92
Auteur Actif Secouriste

ok je vais commencer par le FOR: 5m et je vais voir si ça réduit le bruit. le compteur de défaillances c'est une bonne idée aussi si le FOR est pas suffisant. thx pour les tips la team.

17/08/2024 à 22:16

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