Alertes prometheus qui flappent pour un rien sur nos pods kubernetes

alexandre80 07/07/2025
RÉSOLU
alexandre80
Auteur Actif
Avatar de alexandre80
alexandre80
Auteur Actif

Yo la gang on a un souci avec nos alertes prometheus depuis la mise à jour de notre cluster k8s. Avant c'était ok maintenant on se prend des vagues d'alertes "CPUThrottlingHigh" ou "MemoryUsageHigh" qui durent 30s puis disparaissent. C'est surtout sur des pods de petite taille. Les devs gueulent parce que leurs PagerDuty sonnent pour rien. On a des requests/limits bien définis.

# Exemple d'alerte qui flappe
- alert: CPUThrottlingHigh
  expr: |
    sum(rate(container_cpu_cfs_throttled_periods_total{namespace="prod"}[5m])) by (pod)
    /
    sum(rate(container_cpu_cfs_periods_total{namespace="prod"}[5m])) by (pod)
    > 0.10
  for: 5m
  labels:
    severity: warning
07/07/2025 à 04:10

8 commentaires

benoit-lemonnier
Membre Actif
Avatar de benoit-lemonnier
benoit-lemonnier
Membre Actif

Salut alors déjà pour le flapping les alertes

for:
c'est important. 5m c'est court. Si c'est des micro-bursts une alerte
for: 10m
ou
15m
peut calmer le jeu. Et t'as regardé la cardinalité de tes métriques ? Le
sum by (pod)
ça peut être lourd si t'as trop de pods.

08/07/2025 à 00:33
olivier-lucie
Membre Actif Secouriste
Avatar de olivier-lucie
olivier-lucie
Membre Actif Secouriste

Ouais et t'as pas changé le scheduler k8s ou les CRI runtime ? genre si vous êtes passé de docker à containerd ou rkt ça peut avoir un impact sur la façon dont les ressources sont rapportées ou gérées au niveau du kernel. des fois y a des légères différences de timing ou de précision.

09/07/2025 à 00:04
kfaivre
Membre Actif
Avatar de kfaivre
kfaivre
Membre Actif

perso j'ai déjà eu ça avec des petits pods qui avaient des cpu limits trop faibles genre

100m
ou
200m
. Dès qu'il y a un pic même minime le throttled period explose. Essaie d'augmenter les CPU limits de 50m ou 100m juste pour tester sur un pod non critique. Parfois c'est juste le ratio qui est trop sensible.

09/07/2025 à 20:15
alexandre80
Auteur Actif
Avatar de alexandre80
alexandre80
Auteur Actif

d'acc pour le

for:
je vais l'augmenter un peu. pour le scheduler non on a rien touché. on est bien sur containerd mais c'était déjà le cas avant la maj. le truc des cpu limits faibles ça me parle. on a plein de microservices qui tournent avec
50m
ou
100m
. je vais tester d'augmenter pour voir. les métriques sont pas lourdes la cardinalité c'est gérable.

10/07/2025 à 18:44
benoit-lemonnier
Membre Actif
Avatar de benoit-lemonnier
benoit-lemonnier
Membre Actif

fait gaffe par contre en augmentant les limits tu consommes plus de ressources potentielles sur tes nodes. si t'en as beaucoup ça peut créer d'autres soucis. l'idée c'est de trouver le bon équilibre pour que ça flappe pas sans gaspiller. tu peux aussi affiner ton expression en ajoutant un

min_over_time
ou un
avg_over_time
pour lisser le spike.

11/07/2025 à 17:05
kfaivre
Membre Actif
Avatar de kfaivre
kfaivre
Membre Actif

oui le

min_over_time
c'est pas mal pour ça. genre
min_over_time(rate(container_cpu_cfs_throttled_periods_total[1m])[5m:1m])
ça permet de voir si le throttling est persistant sur une période plus longue et pas juste un pic instantané.

12/07/2025 à 12:01
alexandre80
Auteur Actif
Avatar de alexandre80
alexandre80
Auteur Actif

ok j'ai augmenté le

for:
à
10m
et sur quelques pods de test j'ai mis le cpu limit à
200m
au lieu de
100m
. les alertes sont moins fréquentes c'est déjà ça. je vais aussi tester le
min_over_time
pour affiner encore plus. thx pour les tips ça m'aide bien.

13/07/2025 à 10:56
olivier-lucie
Membre Actif Secouriste
Avatar de olivier-lucie
olivier-lucie
Membre Actif Secouriste

nickel. faut tjrs un peu d'ajustement avec prometheus et les limites de ressources. bon courage

14/07/2025 à 05:10

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