Sujet :

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

RÉSOLU

Liste des sujets Répondre Créer un sujet

tmartins

Membre depuis le 19/04/2024

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 ?

morvan-alix

Membre depuis le 19/04/2024

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 30/07/2024

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 19/04/2024

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 20/04/2024

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 19/04/2024

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 !

Répondre

vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire