Pregunta de entrevista para Site Reliability Engineer

¿Qué es la cardinalidad alta en un sistema de métricas y cómo la mantienes bajo control?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

La cardinalidad es el número de combinaciones únicas de etiquetas de una métrica, y cada combinación es una serie temporal distinta guardada en memoria. Meter ids de usuario, ids de petición, direcciones de correo o rutas de URL en crudo en las etiquetas puede crear millones de series y tumbar una instancia de Prometheus. Mantén las etiquetas acotadas y de baja aridad, plantilla los segmentos dinámicos de las rutas, empuja el detalle por petición a logs o trazas, e impón límites con relabeling y topes de muestras.

Por qué lo preguntan los entrevistadores

Las explosiones de cardinalidad son una de las formas más comunes de que la propia monitorización se convierta en la caída, que es un tipo especial de desastre. El entrevistador comprueba si sabes dónde está la frontera entre métricas, logs y trazas, y si has operado una base de datos de series temporales en lugar de solo consultarla.

Cómo estructurar tu respuesta

  • Define la cardinalidad como conjuntos únicos de etiquetas, cada uno con el coste de una serie viva.
  • Enumera los culpables clásicos que se añaden como etiquetas.
  • Da la regla de qué pertenece a una etiqueta frente a un campo de log.
  • Describe las barreras: descartes con relabel, límites y revisión de métricas nuevas.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Cada combinación única de valores de etiqueta es su propia serie temporal, con su huella de memoria y su bloque en disco. Así que en cuanto alguien añade user_id o una ruta en crudo como etiqueta, pasas de unos cientos de series a millones. Tuvimos una instancia de Prometheus quedándose sin memoria una y otra vez, y resultó que un equipo había añadido la URL completa, con query string incluida, como etiqueta de su contador de peticiones. La regla que uso es que el valor de una etiqueta tiene que venir de un conjunto pequeño y cerrado que podrías escribir en una pizarra: método, clase de estado, plantilla del endpoint, región. Todo lo no acotado se va a una línea de log o a un atributo de span, donde el modelo de almacenamiento está diseñado para eso. En la práctica lo impongo con metric_relabel_configs para descartar etiquetas malas conocidas en el momento del scrape, un límite de muestras por objetivo para que un servicio no pueda tumbar la instancia entera, y una revisión rápida cada vez que aparece una métrica nueva en un pull request.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo averiguarías qué métrica está disparando tu número de series?
  • ¿Cuándo es correcto mover una métrica a una agregación basada en logs?
  • ¿Qué hace un límite de muestras cuando un objetivo lo supera?

Más preguntas para Site Reliability Engineer

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot