En este documento, se presenta el concepto de muestreo, que se refiere a si los datos de un intervalo se envían a Cloud Trace. Cuando se envían datos de un intervalo a Cloud Trace, se toman muestras de ese intervalo. Cuando se registran los datos de cada período de un seguimiento, este se completa. Sin embargo, los seguimientos con frecuencia tienen intervalos faltantes porque cada componente instrumentado en un seguimiento distribuido sistema decide de forma independiente si registrará o no el durante el procesamiento.
Aunque cada componente toma su propia decisión en cuanto a si el intervalo una muestra del procesamiento de datos, esa decisión puede verse influenciada decisión de muestreo. Por ejemplo, supongamos que cada componente tiene una regla que dice “si se muestrean el intervalo superior, tomar muestras del intervalo actual; De lo contrario, muestre el 50% de los intervalos". En esta situación, se cumple lo siguiente:
- El intervalo raíz determina si se toman muestras de todos los intervalos del seguimiento.
- Cuando se hace el muestreo del intervalo raíz, se hace el muestreo de todos los intervalos del seguimiento. Por lo tanto, el seguimiento está completo.
Los componentes pueden pasar su decisión de muestreo al elemento secundario a través del contexto.
Por ejemplo, en el World Wide Web Consortium (W3C)
Encabezado traceparent
,
La marca sampled
almacena la decisión de muestreo del elemento superior.
No confundas el muestreo con la propagación de contexto. El muestreo hace referencia a si un componente registra datos sobre un intervalo. La propagación de contexto hace referencia a si la información sobre el intervalo, como el ID de intervalo, se pasa a los componentes secundarios.
Estrategias de muestreo
Las decisiones de muestreo pueden basarse en la parte superior o en la parte inferior. En el muestreo basado en encabezados, la decisión de muestreo se toma cuando el componente que procesa el intervalo recibe la solicitud. En el muestreo basado en la cola, la decisión de muestreo se retrasa hasta que todo el seguimiento esté disponible.
Es posible que encuentres la frase "Muestreo del 100%" en la documentación de los sistemas de seguimiento distribuidos. Esta frase podría aplicarse a un seguimiento o a un este componente. Cuando se aplica a un seguimiento, significa que se tomaron muestras de todos los intervalos. o, de forma equivalente, que el seguimiento esté completo. Cuando se aplica a un componente, significa que el componente toma muestras de cada intervalo que procesa.
Muestreo basado en la cabeza
Por lo general, los muestreadores basados en encabezados se configuran para muestrear siempre intervalos o para usar una estrategia de muestreo probabilístico:
Con las configuraciones de siempre tomar muestras, todos los componentes que atienden intervalos y que pueden escribir datos de seguimiento toman muestras de los intervalos que procesan. Idealmente, todos los seguimientos están completos y, por lo tanto, tienes la información necesaria para solucionar los problemas. Este tipo de configuración podría hacer que superes las cuotas o los límites de costos de almacenamiento.
Con el muestreo probabilístico, no se muestrean todos los intervalos. El comportamiento real de este enfoque depende de la implementación del componente. En algunas implementaciones, todos los intervalos la misma probabilidad de que se la muestre. En otros casos, la decisión de muestreo del elemento superior influye en si se muestrea un intervalo.
Es posible que los registros no contengan todos los tramos. Esto podría esperarse debido al uso de probabilístico, que puede ser debido a una cuota, o a componentes procesar una solicitud, pero no muestrear el intervalo.
Muestreo basado en la cola
Cloud Trace no admite el muestreo basado en la cola. Las decisiones de muestreo deben tomarse en los componentes que envían datos a Cloud Trace.
Si deseas usar un muestreo basado en la cola, puedes usar un intermediario. servidor que recibe información de seguimiento que retransmite datos a Cloud Trace después de tomar una decisión de muestreo. Por ejemplo, puedes usar el colector de OpenTelemetry con el procesador de muestreo de cola para tomar una decisión de muestreo diferido.
Si planeas usar el muestreo de cola, ten en cuenta lo siguiente:
- Debes almacenar todos los intervalos en un seguimiento antes de tomar una decisión sobre el muestreo. Por lo tanto, es posible que necesites una gran cantidad de almacenamiento temporal o incurras en otras sobrecargas.
- En general, todos los componentes que pueden generar intervalos para el seguimiento deben coordenada. Por lo general, los desarrolladores que usan OpenTelemetry enrutan todos los intervalos del mismo ID de seguimiento al mismo recopilador.
Servicios de muestreo y de Google Cloud
Cada servicio de Google Cloud toma sus propias decisiones de muestreo, y no todas las muestras de servicios de Google Cloud. Es decir, es posible que un servicio nunca envíe datos a Cloud Trace.
Cuando el muestreo es compatible con un servicio de Google Cloud, ese servicio, por lo general, implementa lo siguiente:
- Una tasa de muestreo predeterminada.
- Un mecanismo para usar la decisión de muestreo de la madre o el padre como una pista para saber si muestrear el intervalo.
- Tasa de muestreo máxima.
Para solicitar que un servicio de Google Cloud agregue compatibilidad con el muestreo, sigue estos pasos: usar la Herramienta de seguimiento de errores de Google
¿Qué sigue?
Para obtener información sobre cómo elegir una estrategia de muestreo por nombre de intervalo, consulta Muestreo remoto de Jaeger.
Te recomendamos que revises la siguiente documentación de código abierto para ayudarte a determinar qué enfoque de muestreo es mejor para tus campañas las aplicaciones implementadas:
Documentación de los servicios de Google Cloud: