ah la bonne vieille high cardinality. c'est quasiment toujours un label qui a trop de valeurs uniques. genre ton customer_id là. prom aime pas les labels qui changent tout le temps et qui ont des millions de valeurs possibles
grave. la solution c'est de virer ce genre de label ou de le transformer via un relabel_config. tu peux droper le label customer_id avant que prom ingère la métrique. tu as pas besoin de ça pour agréger en général
exact. si tu as absolument besoin de la dimension customer_id pour certaines requêtes tu peux regarder si tu peux pas l'intégrer dans le nom de la métrique plutôt que comme un label. mais attention ça peut aussi faire des noms de métriques trop nombreux
le mieux c'est de limiter la cardinalité à la source si possible. si tu as des milliers de customers et que tu veux les monitorer individuellement prom est ptete pas l'outil idéal pour ça. à voir si tu peux pré-agréger les données avant de les envoyer à prom
ouais ou des recording rules pour agréger les données à l'avance. genre tu fais une règle qui aggrège par service et env seulement comme ça tu conserves pas le customer_id en base brute
pense aussi à check ton promtool tsdb status pour voir les métriques les plus cardinales. ça t'aide à identifier les coupables. ça te donnera une idée des labels qui te tuent
et une règle d'or ne jamais mettre d'uuid ou d'identifiant unique comme label. c'est le cancer de prom. faut que les labels aient un nombre de valeurs limité et prédictible
d'acc je vois. c'était exactement ça le customer_id qui remontait pour chaque client. j'ai mis en place un relabel_config pour virer ce label avant l'ingestion. les alertes ont disparu et prom respire mieux. thx pour les tips !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
vmoulin
Membre depuis le 20/06/2019actif
salut la team sre ! on a déployé une nouvelle métrique custom pour un service et depuis prometheus nous spamme avec des alertes de high cardinality. le serveur prom est à genoux et ça ramouille pas mal. on avait pas ça avant. la métrique est genre 'app_request_duration_seconds{env="prod", service="my-app", customer_id="abc"}'. le customer_id est la variable.