9 commentaires
salut. la cardinalité c'est le cancer de prometheus. tu as regardé les métriques de prometheus lui-même ? prometheus_tsdb_head_series et prometheus_tsdb_head_chunks c'est les métriques clés. si prometheus_tsdb_head_series est énorme c'est ça le problème. faut trouver la métrique qui a trop de labels.
grave. souvent c'est les labels à haute cardinalité genre pod_name ou instance_id qui viennent des discoverys kubernetes. faut les virer ou les réécrire avec des relabel_configs dans la partie metric_relabel_configs pour garder que l'info pertinente.
tu peux aussi checker la rétention. si tu gardes trop longtemps les données avec une haute résolution ça bouffe de la ram. par défaut c 15 jours. si tu as besoin de plus pense à utiliser un long term storage type Thanos ou Mimir.
j'ai regardé prometheus_tsdb_head_series il est à 8 millions c'est énorme je crois. j'ai vu des séries avec des labels container_id et request_id qui sont partout. ça sent le relabeling obligatoire. je vais essayer de purger ces labels là.
oui container_id et request_id c'est le classique. utilise un action: drop sur les métriques qui ont ces labels si tu en as pas besoin. ou un action: replace pour les généraliser. genre regex: (.*)request_id(.*) et replacement: $1 pour virer la valeur.
et n'oublie pas le __name__ des métriques. si tu as des métriques générées par des libs qui sont pas trop fan de prometheus ça peut aussi contribuer. faut monitorer les exporters et les applications qui balancent des métriques avec trop de dims.
ok je suis en train d'implémenter des metric_relabel_configs massifs pour virer container_id et request_id. j'ai aussi set la rétention à 7 jours au lieu de 15. je relance le pod et je vois. merci pour les tips les gars !
good luck. pense à bien tester tes relabel_configs avec le promtool test rules avant de déployer ça en prod. c facile de casser la collecte si c mal fait.
ha ouais bonne idée pour le test rules. j'ai relancé et la mémoire est plus stable. prometheus_tsdb_head_series est tombé à 2 millions. beaucoup mieux ! merci à vous tous !
Laisser une réponse
Vous devez être connecté pour poster un message !
yo tout le monde ! j'ai un souci récurrent avec mon Prometheus qui se fait OOMKilled sur mon cluster k8s. on a genre 5000 pods à scraper, plein de custom metrics, et même avec 32 Go de RAM il crash. j'ai essayé de jouer avec le scrape interval mais ça change rien de fou. on est sur prometheus 2.37. J'ai l'impression qu'il y a un truc qui explose la cardinalité.