O Que É Cardinalidade em Métricas? A Explosão de Séries Explicada
Cardinalidade em métricas é o número de séries temporais distintas que uma métrica gera, determinado por quantas combinações únicas de valores de labels existem.
Cardinalidade é o conceito que mais frequentemente derruba um sistema de métricas, e o que os iniciantes menos esperam. Cada conjunto único de labels em uma métrica cria uma série temporal separada para armazenar e consultar. Adicione o label errado e essa contagem explode de centenas para milhões, com sérias consequências de custo e desempenho.
O que significa cardinalidade
Uma métrica com labels produz uma série temporal por combinação única de valores de labels. Uma métrica de contagem de requisições rotulada por método e código de status, com poucos valores de cada, pode ser algumas dezenas de séries. Cardinalidade é simplesmente essa contagem total de séries distintas, e ela cresce de forma multiplicativa com cada dimensão de label.
Como ela explode
O problema surge de labels de alta variedade. Adicione um user ID, um request ID ou uma URL bruta como label, e cada valor único cria sua própria série. Um label com um milhão de valores possíveis multiplica sua contagem de séries por um milhão. Essa é a explosão de cardinalidade que sobrecarrega os backends de métricas.
Por que alta cardinalidade é cara
Cada série temporal consome memória e armazenamento e precisa ser indexada. À medida que a cardinalidade cresce, a ingestão fica mais lenta, as consultas ficam caras e o próprio sistema de monitoramento pode cair. A alta cardinalidade é a principal causa de sistemas de métricas se tornarem lentos, não confiáveis ou inviáveis financeiramente.
Controlando a cardinalidade
A disciplina é manter os labels com pouca variedade: use valores limitados e enumeráveis como código de status ou região, e nunca coloque identificadores sem limites em labels de métricas. Quando você realmente precisar de detalhe por entidade, isso pertence a logs ou a ferramentas de eventos amigáveis a alta cardinalidade, não a métricas.
Cardinalidade em métricas de CI/CD
A mesma armadilha se aplica a métricas de pipeline. Rotular uma métrica de build por dimensões estáveis, repository, workflow, tipo de runner, é adequado; rotulá-la por commit SHA ou run ID cria uma nova série para cada build e explode a cardinalidade. Mantenha os labels de métricas de pipeline limitados e envie identificadores únicos para os logs.
Principais conclusões
- Cardinalidade é a contagem de séries temporais únicas geradas por combinações de labels.
- Labels sem limites, como IDs, causam uma explosão de cardinalidade.
- Alta cardinalidade eleva o custo e degrada os sistemas de métricas.
- Mantenha os labels com pouca variedade; coloque IDs únicos em logs, não em métricas.