prometheus alerte cpu high memory low pas de déclenchement

maurice-legros 15/03/2025
RÉSOLU
maurice-legros
Auteur Actif
Avatar de maurice-legros
maurice-legros
Auteur Actif

salut tout le monde ! j'ai un problème avec prometheus. j'ai une alerte pour cpu usage high > 90% sur 5min et une autre pour memory free low < 10% sur 5min. les métriques montrent bien que ça dépasse les seuils mais l'alerte prometheus ne se déclenche jamais. les targets sont up l'exporteur envoie bien les données. j'ai raté un truc ?


# rule.yml (simplifié)
groups:
- name: my-app-alerts
  rules:
  - alert: HighCpuUsage
    expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "CPU usage high on {{ $labels.instance }}"
  - alert: LowMemoryFree
    expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Low memory on {{ $labels.instance }}"
15/03/2025 à 20:11

5 commentaires

hello. première chose à check c'est prometheus lui-même. va dans l'ui sous /alerts et regarde si l'alerte apparaît en pending ou firing. si elle n'apparaît pas du tout c'est que l'expression est ptete pas bonne ou que la rule_file est pas chargée

16/03/2025 à 16:00
marchal-franck
Membre Actif Secouriste
Avatar de marchal-franck
marchal-franck
Membre Actif Secouriste

pour l'expr du cpu attention au 100 - ... idle. si t'as plusieurs coeurs ça peut être tricky. essaie avec sum by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) / count by (instance) (node_cpu_seconds_total{mode="idle"}[5m]) * 100 > 90. et regarde les types de métriques (gauge counter) si tu fais pas une connerie avec le rate

17/03/2025 à 15:34
charlotte00
Membre
Avatar de charlotte00
charlotte00
Membre

et la config de alertmanager ? prometheus envoie les alertes à alertmanager. si alertmanager est down ou mal configuré prometheus ne verra pas d'où il doit l'envoyer. check les logs de prometheus pour voir s'il y a des erreurs de connexion à alertmanager

18/03/2025 à 12:33
oceane-lebon
Membre Actif Secouriste
Avatar de oceane-lebon
oceane-lebon
Membre Actif Secouriste

un classique aussi c'est le for: 5m. si tes données ont des gaps ou si l'exporteur est intermittent prometheus ne verra pas 5 minutes de données continues au-dessus du seuil et l'alerte ne partira pas. assure-toi que tes scrape intervals et evaluation intervals sont alignés

19/03/2025 à 11:56
maurice-legros
Auteur Actif
Avatar de maurice-legros
maurice-legros
Auteur Actif

d'acc merci à tous. en fait c'était une combinaison. ma rule_file n'était pas rechargée après modification (j'avais oublié le kill -hup) et l'expr du cpu était pas tip top. j'ai corrigé le rule_file et l'expr cpu avec vos suggestions et là ça marche impec. j'ai vu l'alerte se déclencher direct en testant. merci bien

20/03/2025 à 11:44

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