Planteamiento
Diseña una canalización de métricas de latencia para servicios multirregión: los SDK emiten datos de ExponentialHistogram de OpenTelemetry, un Collector los agrega y un backend escribe histogramas nativos de Prometheus. Explica la semántica, las rutas de degradación y los controles de costos.
Escenario y restricciones
La latencia abarca desde microsegundos hasta minutos y los servicios tienen etiquetas de alta cardinalidad. Algunos backends solo admiten depósitos (buckets) clásicos, los lotes pueden perderse y las consultas necesitan p50, p95 y agregación entre regiones. Las métricas no deben exponer datos de inquilinos ni crear series temporales ilimitadas.
Qué evalúa esto
La prueba cubre límites exponenciales, escala, depósitos positivos y negativos, recuento de ceros, recuento/suma, temporalidad y capacidad de combinación entre procesos. OpenTelemetry comprime los límites exponenciales para un alto rango dinámico con un error relativo pequeño; los histogramas nativos de Prometheus pueden mapear el modelo, pero la conversión y las consultas deben preservar el significado.
Enfoque de referencia
Registra solo las dimensiones comerciales y observaciones aprobadas en el SDK. Combina el mismo esquema en el Collector por servicio, región y ventana fija. Convierte explícitamente a depósitos clásicos acotados para backends no compatibles y registra la pérdida de precisión. Limita la escala, el recuento de depósitos, los conjuntos de etiquetas y los presupuestos por inquilino; reduce el muestreo o rechaza nuevas etiquetas al alcanzar el límite en lugar de truncar silenciosamente.
Detalles críticos
Verifica la temporalidad, la temporalidad de agregación, el esquema, los depósitos positivos y negativos y el rango de tiempo antes de combinar; los diferentes esquemas no se pueden sumar directamente. Consulta el p95 como una aproximación y muestra el recuento de muestras, el error y los marcadores de degradación. Usa números de secuencia de lote y reintentos para evitar contar un lote dos veces.
Errores comunes
Llamar cuantiles exactos a los depósitos exponenciales; sumar diferentes temporalidades; permitir etiquetas ilimitadas; convertir todo a la escala más fina; ignorar valores negativos, depósitos de cero y duplicación por reintentos; y medir el almacenamiento sin considerar la amplificación de consultas.
Rúbrica de evaluación
Las respuestas sólidas definen los límites del SDK, Collector, remote-write, consultas y control de presupuesto; establecen invariantes de combinación y políticas de degradación; y explican el error de p95. Decir "usa histogram_quantile" sin el modelo de datos o el análisis de costos es insuficiente.
Preguntas de seguimiento
¿Por qué no se pueden combinar directamente diferentes esquemas exponenciales?
Sus índices de depósitos se asignan a límites diferentes, por lo que la suma colocaría las observaciones en los rangos incorrectos. Reasigna a un esquema compatible según la especificación y registra el cambio de precisión.
¿Cómo manejas juntos la temporalidad acumulativa y delta?
Convierte explícitamente en el Collector mientras conservas el inicio de cada flujo y los valores anteriores. Si falta continuidad, descarta o marca la ventana incompleta; nunca sumes valores acumulativos como deltas.
¿Cuándo deberías recurrir a los histogramas clásicos?
Usa depósitos clásicos acotados cuando el backend carezca de soporte nativo, el cumplimiento normativo requiera rangos fijos o el ecosistema de consultas no pueda interpretar depósitos exponenciales. Publica la compensación entre error y costo en lugar de hacer que los consumidores tengan que adivinar.