Yeda AI Tips · #161

English

Nunca pongas user_id en una etiqueta de métrica

Una etiqueta de métrica inocente puede multiplicar por 10 tu factura de métricas. El mecanismo tiene nombre: cardinalidad. En una base de datos de series temporales como Prometheus, cada combinación única de valores de etiqueta es una serie temporal distinta — almacenada, indexada y consultada para siempre. Si pones user_id en una métrica, no agregaste una columna; multiplicaste tu cantidad de series por la cantidad de usuarios.

Por qué una sola etiqueta hace estallar tu almacenamiento

Prometheus lo dice sin rodeos: "cada combinación única de pares clave-valor de etiquetas representa una nueva serie temporal, lo que puede aumentar drásticamente la cantidad de datos almacenados." Un solo contador con una etiqueta que toma 50.000 valores son 50.000 series. Agrega una segunda etiqueta sin límite — por ejemplo request_id — y multiplicas, no sumas.

La documentación incluso cuantifica el techo. Una métrica de cuota por usuario en 10.000 nodos y 10.000 usuarios crearía "decenas de millones" de series — "demasiado para la implementación actual de Prometheus." La recomendación: mantén la cardinalidad de una métrica por debajo de 10, y trata cualquier valor superior a 100 como un problema de diseño a corregir.

La regla: las etiquetas son para dimensiones acotadas

Una etiqueta de métrica responde "¿cuál cubeta?" — y el conjunto de cubetas debe ser pequeño, conocido y estable. Si aparecen valores nuevos cada vez que un usuario se registra o llega una petición, la dimensión es no acotada y no debe estar cerca de una métrica.

Seguro en etiquetas (acotado)Nunca en etiquetas (no acotado)
route / endpoint (con plantilla, no crudo)URL cruda / ruta completa con IDs
status_class (2xx, 4xx, 5xx)status_code exacto × todo lo demás
method (GET, POST)request_id / trace ID
tenant_id (decenas–cientos)user_id / session_id
region, env, serviceemail, dirección IP, timestamp

Fíjate en route, no en la URL cruda: /orders/{id} es un solo valor de etiqueta; /orders/8412, /orders/8413 … son millones. La forma con plantilla es la versión acotada de la misma idea.

A dónde van realmente los IDs de alta cardinalidad

Sigues necesitando detalle por usuario y por petición — solo que no en las métricas. La respuesta de los tres pilares:

Las métricas te dicen que algo anda mal y cuánto; los logs y traces te dicen qué usuario y por qué.

Movidas avanzadas

Recursos

¿Construyes apps de IA que deben mantenerse observables y económicas? Yeda AI diseña, audita y lanza sistemas en producción. Habla con nosotros · Mira la serie completa de tips