Sujet :

SRE : Alertes prometheus qui flappent sur des métriques à forte cardinalité

RÉSOLU

Liste des sujets Répondre Créer un sujet

theophile49

Membre depuis le 04/05/2024

salut tout le monde ! j'ai un souci avec prometheus. on a des alertes qui flappent à mort sur un service qui expose pas mal de métriques avec une très forte cardinalité (genre par user_id). l'alerte est simple, si http_errors_total > X sur 5min. ça s'active, ça se désactive, ça devient insupportable. comment je stabilise ça sans juste augmenter les seuils ?

# exemple d'alerte (simplifiée)
- alert: highhttperrors
  expr: sum(rate(http_errors_total[5m])) by (service_name) > 50
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: "trop d'erreurs http sur {{ $labels.service_name }}"

lmarty

Membre depuis le 10/05/2024

le flapping ça sent le for trop court ou la métrique pas assez lissée. tu peux essayer de mettre un for plus long genre 5m et voir si ça aide. ou alors agrège plus grossièrement ta métrique si tu peux te le permettre

benoit-pons

Membre depuis le 25/06/2024

si c'est par user_id c'est la cata effectivement. sum by (service_name) c'est pas mal mais est-ce que tu n'as pas des instances qui meurent et renaissent rapidement ? ça peut créer des gaps. essaie d'utiliser group_left ou group_right si tu dois joindre des métriques pour éviter les désalignements

michelle38

Membre depuis le 21/07/2024

perso quand j'ai du flapping avec de la cardinalité de ouf je vérifie toujours la rétention de prometheus et le nombre de series. si ça explose c que ton scraping est trop fin ou ta métrique est mal conçue pour l'alerte. tu peux tenter un sum by (service_name) mais avec un avg_over_time sur 15-30min pour vraiment lisser les pics temporaires

oguillon

Membre depuis le 16/04/2025

attention à l'usage de rate() avec sum() si ton http_errors_total est un counter par user_id. si le user_id disparaît, le counter aussi. ce qui peut faire des alertes fantômes. il faudrait mieux un increase() ou s'assurer que tu ne perds pas de séries

theophile49

Membre depuis le 04/05/2024

ok merci pour les tips les gars ! en fait c'était une combinaison de for trop court et surtout un label endpoint_path qui rendait la cardinalité folle même après le sum by service_name. j'ai refactorisé la métrique pour ne pas inclure ce label dans les alertes mais dans des dashboards spécifiques et j'ai mis un for: 5m sur l'alerte. ça a l'air de tenir maintenant.

Répondre

vous devez être connecté pour poster un message !

Rejoindre la communauté

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

S'inscrire