Prometheus qui oomkiller sur des requêtes dashboard

monnier-augustin 28/06/2024
RÉSOLU
monnier-augustin
Auteur Actif
Avatar de monnier-augustin
monnier-augustin
Auteur Actif

salut la team sre. notre prometheus (un seul pod sur k8s) se fait oomkiller régulièrement quand on ouvre certains dashboards grafana. y'a des requêtes promql qui sont un peu lourdes je pense mais je vois pas trop comment optimiser sans casser les dashboards. la limite de ram est à 16g mais ça suffit pas parfois

28/06/2024 à 23:19

12 commentaires

roland00
Membre Actif Rédacteur Secouriste
Avatar de roland00
roland00
Membre Actif Rédacteur Secouriste

hello ! oomkill sur prometheus avec grafana ça sent la cardinality explosive. tu scrapes des métriques avec des labels qui changent trop souvent? genre des IDs de requêtes, des UUIDs? si oui, faut relabel au scrape avec un labeldrop ou label_replace pour réduire le nombre de séries uniques

Modifié le 23/05/2026 à 16:20
francois-albert
Membre Actif Rédacteur
Avatar de francois-albert
francois-albert
Membre Actif Rédacteur

et regarde la durée de tes requêtes. si tes dashboards interrogent sur des périodes trop longues (plusieurs jours ou semaines) avec des agrégations complexes (rate, sum by, histogram_quantile), ça demande bcp de ram. essaye de réduire les plages de temps pour voir si ça tient mieux

Modifié le 23/05/2026 à 16:20
lesage-pauline
Membre Actif Secouriste
Avatar de lesage-pauline
lesage-pauline
Membre Actif Secouriste

t'as check le storage.tsdb.retention.time dans ta config prometheus? si c'est trop long et que ton volume est trop grand ça peut aussi être une raison. et le query.max-concurrent et query.timeout peuvent aider un peu mais c'est pas une solution miracle

Modifié le 23/05/2026 à 16:20
xchauvet
Membre Actif
Avatar de xchauvet
xchauvet
Membre Actif

regarde aussi les métriques internes de prometheus lui-même. prometheus_tsdb_head_series et prometheus_tsdb_head_chunks c'est clé pour la cardinality. le endpoint /api/v1/status/tsdb te donne une bonne vue de l'état de la base et des séries à forte cardinality

Modifié le 23/05/2026 à 16:20
monnier-augustin
Auteur Actif
Avatar de monnier-augustin
monnier-augustin
Auteur Actif

ouais j'ai pas mal de métriques applicatives qui ont des tags dynamiques. par exemple on tag les requêtes http avec un trace_id. ça crée plein de séries uniques c'est clair. les dashboards interrogent sur 24h à 7j selon le dashboard

Modifié le 23/05/2026 à 16:20
roland00
Membre Actif Rédacteur Secouriste
Avatar de roland00
roland00
Membre Actif Rédacteur Secouriste

le trace_id en label c'est le pire ennemi de prometheus. il faut absolument virer ça au scrape. tu peux utiliser un relabel_configs dans ton scrape_configs pour supprimer ce label avant que prometheus l'ingère

Modifié le 23/05/2026 à 16:20
francois-albert
Membre Actif Rédacteur
Avatar de francois-albert
francois-albert
Membre Actif Rédacteur

pour les plages longues, si tu as besoin d'historique, pense à un setup avec Thanos ou Cortex pour le long-term storage, et utilise le query frontend pour faire de la downsampling ou des requêtes distribuées. ton prometheus local sera moins sollicité

05/07/2024 à 07:00
lesage-pauline
Membre Actif Secouriste
Avatar de lesage-pauline
lesage-pauline
Membre Actif Secouriste

fais gaffe aussi si tu fais des group_left ou group_right avec beaucoup de séries. ça peut aussi faire des gros pics de ram. privilégie les on() si tu peux

Modifié le 23/05/2026 à 16:20
xchauvet
Membre Actif
Avatar de xchauvet
xchauvet
Membre Actif

et après un relabeling propre, si tu vois que la ram est toujours limite, tu peux essayer de monter GOMAXPROCS ou ajuster les limites CPU de ton pod prometheus. mais la cardinality c 90% du problème des oomkills

Modifié le 23/05/2026 à 16:20
monnier-augustin
Auteur Actif
Avatar de monnier-augustin
monnier-augustin
Auteur Actif

ok je vais mettre en place un relabel_configs pour supprimer le trace_id et d'autres labels à haute cardinality. j'ai regardé le tsdb stats et j'ai une métrique qui a plus de 10 millions de séries actives à cause de ça. c'est bien le souci. thx les gars je vous tiens au jus

Modifié le 23/05/2026 à 16:20
roland00
Membre Actif Rédacteur Secouriste
Avatar de roland00
roland00
Membre Actif Rédacteur Secouriste

good luck ! ça va te sauver la vie (et la ram de prometheus)

08/07/2024 à 18:36
monnier-augustin
Auteur Actif
Avatar de monnier-augustin
monnier-augustin
Auteur Actif

j'ai déployé la nouvelle config de scrape avec le relabeling. prometheus est stable depuis quelques heures et les dashboards s'ouvrent sans souci. merci à tous pour les pistes c'était bien la cardinality le problème!

09/07/2024 à 16:22

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