Alertes prometheus qui flappent pour un rien sur nos pods kubernetes

Posté par alexandre80 le 07/07/2025
RÉSOLU

alexandre80

Membre depuis le 08/12/2024

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

Commentaires

benoit-lemonnier

Membre depuis le 21/07/2024

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.

olivier-lucie

Membre depuis le 24/05/2024

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.

kfaivre

Membre depuis le 18/05/2024

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.

alexandre80

Membre depuis le 08/12/2024

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.

benoit-lemonnier

Membre depuis le 21/07/2024

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.

kfaivre

Membre depuis le 18/05/2024

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é.

alexandre80

Membre depuis le 08/12/2024

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.

olivier-lucie

Membre depuis le 24/05/2024

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

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