alertes prometheus sur cpu usage qui sont en fait du i/o wait

gregoire59 17/11/2025
RÉSOLU
gregoire59
Auteur Actif
Avatar de gregoire59
gregoire59
Auteur Actif

salut j'ai des alertes prometheus qui pètent sur le cpu usage de mes instances k8s. mais quand je me co sur les nodes et que je fais un top je vois que le cpu est en fait majoritairement en iowait. du coup l'alerte est un peu trompeuse. comment je peux mieux monitorer ça pour différencier le cpu pur du iowait via prometheus et node-exporter ?

17/11/2025 à 18:10

6 commentaires

nicole-vallee
Membre Actif
Avatar de nicole-vallee
nicole-vallee
Membre Actif

le cpu iowait c'est quand le cpu attend des opérations d'e/s (disque réseau). c'est pas du cpu pure mais ça montre une saturation. le node-exporter expose des métriques de disque regarde les node_disk_io_time_seconds_total ou node_disk_weighted_io_time_seconds_total pour voir le temps passé à faire des i/o

18/11/2025 à 17:49
laurent36
Membre Actif Secouriste
Avatar de laurent36
laurent36
Membre Actif Secouriste

pour affiner tu peux aussi regarder node_filesystem_avail_bytes ou node_filesystem_free_bytes pour les disques. et surtout node_disk_io_time_seconds_total pour chaque disque. si tu as des spikes là dessus c'est que le disque est saturé et que le cpu attend

19/11/2025 à 16:07
zoe47
Membre Actif
Avatar de zoe47
zoe47
Membre Actif

un truc cool c de regarder les iops et la latence. le node-exporter a des metrics comme node_disk_reads_completed_total et node_disk_writes_completed_total. tu peux calculer les iops et regarder si c anormalement bas pour la charge cpu affichée en iowait. ou la latence avec les _seconds_total et les _merged_total

20/11/2025 à 10:44
gregoire59
Auteur Actif
Avatar de gregoire59
gregoire59
Auteur Actif

d'acc je vois. donc je devrais plutôt baser mes alertes sur des métriques de disque et d'iops que sur le cpu_usage direct. vous auriez une petite query promql pour alerter si le iowait est élevé et que le disque est busy genre à plus de 80% de son temps sur les 5 dernières minutes ?

21/11/2025 à 06:12
nicole-vallee
Membre Actif
Avatar de nicole-vallee
nicole-vallee
Membre Actif

voilà une base :


(rate(node_cpu_seconds_total{mode="iowait"}[5m]) > 0.05)
and
(rate(node_disk_io_time_seconds_total[5m]) / node_disk_io_time_seconds_total > 0.8)

la première partie pour le iowait > 5% et la deuxième pour le disque busy > 80% tu peux ajuster les seuils bien sûr

22/11/2025 à 00:50
gregoire59
Auteur Actif
Avatar de gregoire59
gregoire59
Auteur Actif

parfait ça c'est beaucoup plus parlant comme alerte. je vais implémenter ça. thx pour le coup de main !

23/11/2025 à 00:40

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