SRE : Prometheus 'high cardinality' avec des métriques k8s

Posté par tmartins le 23/02/2025
RÉSOLU

tmartins

Membre depuis le 25/04/2020

bonjour la team j'ai prometheus qui rame grave et me balance des alertes sur la high cardinality de mes métriques. c principalement des métriques de pods k8s qui ont des labels comme pod_name container_id etc. on a des centaines de pods ça devient ingérable. comment vous gérez ça sans perdre trop d'infos ?

Commentaires

morvan-alix

Membre depuis le 03/04/2019

salut ! ouais la high cardinality c'est le cancer de prometheus. souvent faut utiliser des relabel_configs sur tes jobs pour virer ou transformer les labels qui changent tout le temps. par exemple virer container_id ou remplacer pod_name par un nom de déploiement plus générique

# exemple de relabel_config
- source_labels: [__meta_kubernetes_pod_name]
  regex: "(.*)-[a-z0-9]{5}$"
  target_label: deployment_name
  replacement: "$1"
- source_labels: [__meta_kubernetes_container_id]
  action: drop

guillaume-clerc

Membre depuis le 18/04/2020

exacte ! et faut aussi checker tes metric_relabel_configs. ça c'est pour agir directement sur le nom ou les labels de la métrique *après* le scraping. des fois certaines métriques sont juste pas utiles et tu peux les dropper complètement pour soulager prometheus

tmartins

Membre depuis le 25/04/2020

d'acc je vois l'idée. du coup je dois analyser quelles sont les métriques et les labels qui causent le plus de problèmes. y'a un outil ou une requête promql pour identifier les métriques à haute cardinalité ?

gilles-descamps

Membre depuis le 02/04/2019

oui tu peux utiliser count by (__name__, job, instance) ({__name__=~".+"}) ça te donnera le nombre de séries temporelles pour chaque métrique combiné avec le job et l'instance. ça aide à identifier les coupables. et aussi topk(10, count by (__name__) ({__name__=~".+"})) pour les métriques les plus nombreuses

tmartins

Membre depuis le 25/04/2020

super ces requêtes promql ! j'ai pu identifier les métriques les plus problématiques et j'ai commencé à appliquer des relabel_configs pour nettoyer les labels type container_id et pod_uid. prometheus respire déjà mieux. merci pour les tips !

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