Alerte Prometheus qui se déclenche pas pour CPU thresold

Posté par edouard21 le 06/01/2026
RÉSOLU

edouard21

Membre depuis le 17/04/2024

hey la team on a un souci avec une alerte prometheus. je veux qu'une alerte se déclenche si l'utilisation cpu moyenne sur 5 minutes dépasse 80% sur un de nos serveurs critiques. j'ai défini la règle dans alertmanager mais elle se déclenche jamais même si je vois bien le cpu monter au-dessus de 80% dans grafana

# prometheus rule
groups:
- name: critical-servers
  rules:
  - alert: HighCPUCriticalServer
    expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle", instance=~"server-prod-.*"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "High CPU usage on critical server {{ $labels.instance }}"
      description: "CPU usage on {{ $labels.instance }} is above 80% for 5 minutes."

dans grafana la query marche nickel et je vois les serveurs monter en cpu mais l'alerte reste en pending ou suppressed jamais firing. je comprends pas pourquoi elle passe pas en firing

Commentaires

auguste86

Membre depuis le 21/07/2024

salut. t'as vérifié que prometheus scrape bien les metrics de ces instances ? et que les labels instance=~"server-prod-.*" correspondent bien à tes cibles. des fois une coquille dans le regex ça fausse tout. tu peux voir dans la target status de prometheus si tes cibles sont up et scrappées

edouard21

Membre depuis le 17/04/2024

oui oui les cibles sont bien scrappées et les labels correspondent c'est le même regex que j'utilise partout. les métriques s'affichent correctement dans grafana c'est ça qui est dingue. la query prometheus renvoie bien des valeurs > 80 quand le cpu est haut

thomas-desousa

Membre depuis le 29/06/2024

le probleme vient peut être de ton for: 5m. si la métrique reste au-dessus de 80% mais pas continuellement pendant 5 minutes pile mais qu'il y a des petits creux ça reset le timer. tu peux essayer de réduire le for: à 1m juste pour tester si ça se déclenche ou utiliser un plus large time window pour le rate si la métrique est un peu volatile

aussi le avg by (instance) est correct mais assure-toi que tu n'as pas plusieurs modes idle qui feraient des moyennes bizarres si tu as des cpus virtuels ou hyperthreading qui se comportent bizarrement

edouard21

Membre depuis le 17/04/2024

j'ai réduit le for à 1m pour tester et... ça s'est déclenché ! bien vu pour le for. le cpu doit avoir des micro-chutes qui resettaient le timer. je vais laisser à 1m ou 2m ça me convient mieux pour l'alerte. thx pour l'astuce !

emilie01

Membre depuis le 16/04/2024

cool que ça marche ! un autre truc pour ce genre de métriques volatiles: tu peux utiliser avg_over_time à la place du rate puis avg by. ça lisse un peu mieux les pics et creux sur la période. juste pour info si tu as d'autres alertes qui posent problème avec des métriques moins stables

100 - (avg_over_time(node_cpu_seconds_total{mode="idle", instance=~"server-prod-.*"}[5m]) * 100) > 80

edouard21

Membre depuis le 17/04/2024

ah top ça je savais pas pour avg_over_time. je vais regarder ça pour nos prochaines règles. merci à tous pour l'aide précieuse !

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