El muestreo de trazas conserva solo las trazas de solicitudes seleccionadas, lo que reduce el almacenamiento y el procesamiento, pero conlleva el riesgo de perder la ruta exacta del flujo de trabajo necesaria para el diagnóstico.
Una solicitud de IA local puede atravesar una puerta de enlace, un enrutador de modelos, un servicio de búsqueda vectorial, un entorno aislado de herramientas y un puente de automatización del hogar, generando muchos spans por interacción. Registrar cada ruta indefinidamente es costoso. El muestreo decide qué trazas completas u observaciones parciales se conservan, pero el momento y los criterios de esa decisión determinan si un tiempo de espera agotado poco frecuente, una llamada a una herramienta denegada o un fallback silencioso siguen siendo visibles.
El muestreo de trazas selecciona historiales de solicitudes, no hechos individuales
Una traza representa una solicitud mediante spans relacionados entre servicios. El muestreo decide si ese historial de solicitud se registra o se exporta, normalmente según la probabilidad, los atributos o una política. Las métricas y los registros pueden seguir existiendo, pero no pueden reconstruir la misma ruta causal a menos que conserven identificadores compatibles.
La documentación de conceptos de muestreo distingue entre el muestreo de cabecera, decidido cerca del inicio de la solicitud, y el muestreo de cola, decidido después de que llegan la mayoría de los spans. El muestreo de cabecera es sencillo y económico, mientras que el muestreo de cola puede conservar trazas según la latencia final, el estado de error o los atributos descubiertos posteriormente.
Por tanto, el muestreo cambia la cobertura de diagnóstico, no el comportamiento de la aplicación. Una solicitud puede completarse o fallar de forma idéntica tanto si su traza se conserva como si no, pero después del evento el operador ve un conjunto de evidencias diferente. Esta distinción sigue siendo visible durante las pruebas posteriores en el hogar.
Las decisiones de cabecera no pueden detectar un fallo que ocurre después
Una decisión de probabilidad tomada en el span raíz no puede saber que la llamada final a una herramienta agotará el tiempo de espera o que un servicio posterior devolverá un error. Si la solicitud se descarta en la cabecera, todos los spans posteriores pueden quedar indisponibles aunque el evento sea importante desde el punto de vista operativo.
Un ejemplo de retención basada en la cola de OpenTelemetry describe la conservación de actividades fallidas mediante un enfoque orientado a la cola. Ilustra la ventaja principal: la decisión puede utilizar el resultado completado en lugar de intentar adivinar la importancia a partir de los atributos presentes al principio.
El muestreo de cabecera sigue siendo útil para obtener tendencias generales de rendimiento cuando las tasas son estables y los identificadores se propagan de forma coherente. Se vuelve arriesgado cuando los fallos son poco frecuentes, se agrupan en una ruta de bajo volumen o solo pueden descubrirse después de varios pasos del agente.
Las políticas de cola añaden estado, retraso y sus propios puntos ciegos
El muestreo de cola almacena temporalmente los spans hasta que se cierra una ventana de decisión, los agrupa por ID de traza y aplica políticas ordenadas. Los spans tardíos, el enrutamiento dividido, los reinicios del colector, la presión de memoria o una ventana más corta que el flujo de trabajo pueden dejar al muestreador con una traza incompleta.
Los requisitos del colector advierten que todos los spans de una traza deben llegar a la misma instancia del colector y que los spans pendientes consumen memoria. Estos requisitos son importantes en un servidor doméstico pequeño, donde el proceso de observabilidad compite con la inferencia por la RAM.
El límite del fallo es un flujo de trabajo cuyo span de error decisivo llega después de que el muestreador toma la decisión, llega a otro colector o carece del atributo de estado utilizado por la política. El muestreo de cola mejora la selección solo cuando el ensamblaje de la traza sigue siendo fiable.
Ejecuta una prueba de cobertura de trazas con fallos conocidos
Crea flujos de trabajo controlados que fallen en el enrutador, el servicio de recuperación, el servidor de modelos, el entorno aislado de herramientas y la llamada final de automatización del hogar. Asigna un ID de correlación de prueba, registra la secuencia de spans esperada y repite cada fallo suficientes veces para poner a prueba la probabilidad configurada y las políticas de cola.
Usa el mapa de servicios de trazabilidad de extremo a extremo para verificar que cada traza de fallo conservada contenga su raíz, las llamadas intermedias, el error final y los atributos de política pertinentes. Cuenta por separado las solicitudes fallidas en una métrica sin muestreo para poder detectar las trazas ausentes en lugar de confundirlas con fallos inexistentes.
Da la prueba por superada solo cuando los fallos críticos se conserven con la tasa requerida y las trazas incompletas puedan medirse explícitamente. Reserva las reglas de muestreo permanente para las clases de error de mayor valor, limita la memoria del búfer y prueba las condiciones de reinicio del colector y de llegada tardía de spans antes de depender de las trazas para reconstruir incidentes.
Centro de Tecnología e IA
Más para leer

¿Puede un LLM local reanudar la generación después de que se reinicie su proceso?
Una explicación de la reanudación de la generación de LLM desde el mecanismo, sus concesiones en recursos compartidos, tres preguntas frecuentes sobre la ramificación...

¿Puede un servidor doméstico ejecutar embeddings y transcodificación de vídeo en la misma GPU integrada?
Una explicación centrada en el mecanismo de las representaciones vectoriales compartidas de la iGPU y la transcodificación, sus ventajas y desventajas en cuanto a...

¿Cómo afecta la duración de los tokens de acceso a la seguridad y las molestias en el hogar?
Una explicación centrada en el mecanismo sobre la duración de los tokens de acceso, sus ventajas y desventajas respecto a los recursos compartidos, tres...

