Membre depuis le 29/01/2020
yo. ah la high cardinality c'est le cancer de prometheus. la première chose à faire c'est un bon nettoyage via relabel_configs. tu dois virer tous les labels qui ont une cardinalité trop élevée, genre user_id, session_id, request_id... ces trucs là sont à logger, pas à scraper dans prometheus.
Membre depuis le 02/04/2019
exactement. utiliser le prometheus TSDB status page pour voir les series par target et les labels qui génèrent le plus de series. tu peux aussi query l'api prometheus pour ça :
/api/v1/status/tsdb ça va te donner des infos sur les blocs et la cardinalité.
Membre depuis le 17/06/2021
et alertmanager qui spamme c'est typique si t'as des alerts basées sur des requêtes avec ces labels à haute cardinalité. l'évaluation prend trop de temps, ou alors les labels changent tellement vite que ça crée des instances d'alertes à la volée.
Membre depuis le 23/03/2020
ok les relabel_configs c'est chaud à faire sans tout péter. et le tsdb status j'ai regardé c'est un peu un bordel avec tous les labels mais je vois bien que c'est nos métriques custom qui pèsent. je dois virer complètement user_id etc ? même si on en a besoin pour debug ?
Membre depuis le 29/01/2020
oui carrément virer ces labels si c'est pour du debug. prometheus n'est pas un système de log ou de tracing. si tu veux ces infos pour debug, mets les dans les logs de ton app ou un outil de tracing type jaeger/opentelemetry. prometheus c'est pour l'état global et les agrégats.
Membre depuis le 02/04/2019
un bon pattern c de garder des labels d'identification stables genre pod name, service name, namespace. et tous les trucs volatiles c dehors. tu peux faire des relabel_configs avec action: drop sur des regex qui matchent tes labels problématiques.
Membre depuis le 17/06/2021
aussi check tes exporter configs. y'a des exporters qui par défaut sont trop verbeux. le kube-state-metrics par exemple peut être configuré pour ne pas exposer certains labels inutiles pour ton contexte.
Membre depuis le 23/03/2020
ça me fait chier de jeter user_id mais je vois le point. ok je vais tenter de virer ces labels sur nos métriques custom avec un relabel_config global. et je vais regarder le kube-state-metrics si on peut l'alléger.
Membre depuis le 29/01/2020
fais gaffe avec le relabel_config global si t'as beaucoup de jobs, c'est mieux de le faire par job ou par scrape_config. ouais et pour kube-state-metrics c'est --metric-labels-allowlist et --metric-annotations-allowlist
Membre depuis le 02/04/2019
et une fois que t'as cleané, regarde le cardinality_limit dans prometheus.yml pour éviter que ça reparte en vrille. ça met une limite sur les series actives. --tsdb.max-series= au démarrage aussi.
Membre depuis le 23/03/2020
ok la liste est longue. je vais commencer par les relabel_configs sur les métriques user_id/session_id. on verra après pour kube-state-metrics et les limites. énorme merci pour toutes les infos, ça va bien m'aider à remettre cette usine à gaz en état.
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
thomas-morel
Membre depuis le 23/03/2020
Salut la team. On a de gros soucis de perf sur notre cluster Prometheus. Il est en PLS constante, et alertmanager spamme des alertes fantômes. Je suis presque sûr que c un souci de high cardinality mais j'arrive pas à spotter la source exacte.
On a des milliers de pods k8s qui bougent tout le temps, et chacun expose des metrics. On a pas mal de labels sur les metrics custom aussi, genre user_id, session_id, request_id... c'est le carnage.
Comment je peux trouver les labels qui me tuent prometheus et le rendre stable sans tout casser ?