Preguntas frecuentes sobre el seguimiento distribuido
¿Cómo funciona el seguimiento distribuido con Istio?
Istio se integra con sistemas de seguimiento distribuido utilizando el seguimiento basado en Envoy. Con la integración de seguimiento basada en Envoy, las aplicaciones son responsables de reenviar las cabeceras de seguimiento para las solicitudes salientes posteriores.
Puede encontrar información adicional en la descripción general del seguimiento distribuido y en los documentos de seguimiento de Envoy.
¿Qué se requiere para el seguimiento distribuido con Istio?
Istio permite la notificación de tramos de seguimiento para las comunicaciones de workload a workload dentro de una malla. Sin embargo, para que los diversos tramos de seguimiento se unan para obtener una vista completa del flujo de tráfico, las aplicaciones deben propagar el contexto de seguimiento entre las solicitudes entrantes y salientes.
En particular, Istio se basa en que las aplicaciones reenvíen el ID de solicitud generado por Envoy y las cabeceras estándar. Estas cabeceras incluyen:
x-request-id
traceparent
tracestate
Los usuarios de Zipkin deben asegurarse de que propagan las cabeceras de seguimiento B3.
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
b3
La propagación de cabeceras se puede lograr a través de bibliotecas de cliente, como OpenTelemetry. También se puede lograr manualmente, como se documenta en la tarea de seguimiento distribuido.
¿Cómo funciona el seguimiento basado en Envoy?
Para las integraciones de seguimiento basadas en Envoy, Envoy (el proxy sidecar) envía información de seguimiento directamente a los backends de seguimiento en nombre de las aplicaciones que se están representando.
Envoy:
- genera ID de solicitud y cabeceras de seguimiento (es decir,
X-B3-TraceId
) para las solicitudes a medida que fluyen a través del proxy - genera tramos de seguimiento para cada solicitud en función de los metadatos de la solicitud y la respuesta (es decir, el tiempo de respuesta)
- envía los tramos de seguimiento generados a los backends de seguimiento
- reenvía las cabeceras de seguimiento a la aplicación representada
Istio admite OpenTelemetry y backends compatibles, incluidos Jaeger. Otras plataformas compatibles incluyen Zipkin y Apache SkyWalking.
¿Qué genera las cabeceras de seguimiento iniciales?
La gateway de Istio o el proxy sidecar (Envoy) genera las cabeceras iniciales, si no las proporciona la solicitud.
¿Por qué Istio no puede propagar cabeceras en lugar de la aplicación?
Aunque un sidecar de Istio procesará tanto las solicitudes entrantes como las salientes para una instancia de aplicación asociada, no tiene una forma implícita de correlacionar las solicitudes salientes con la solicitud entrante que las causó. La única forma en que se puede lograr esta correlación es si la aplicación propaga información relevante (es decir, cabeceras) de la solicitud entrante a las solicitudes salientes. La propagación de cabeceras se puede lograr a través de bibliotecas de cliente o manualmente. Se proporciona una discusión adicional en ¿Qué se requiere para el seguimiento distribuido con Istio?.
¿Por qué no se rastrean mis solicitudes?
La tasa de muestreo para el seguimiento se establece en el 1% en el perfil de configuración predeterminado
.
Esto significa que solo 1 de cada 100 instancias de seguimiento capturadas por Istio se informará al backend de seguimiento.
La tasa de muestreo en el perfil demo
se establece en 100%. Consulte
esta sección
para obtener información sobre cómo establecer la tasa de muestreo.
Si aún no ve ningún dato de seguimiento, confirme que sus puertos cumplen con las convenciones de nomenclatura de puertos de Istio y que el puerto de contenedor apropiado está expuesto (a través de la especificación del pod, por ejemplo) para permitir la captura de tráfico por el proxy sidecar (Envoy).
Si solo ve datos de seguimiento asociados con el proxy de salida, pero no con el proxy de entrada, aún puede estar relacionado con las convenciones de nomenclatura de puertos de Istio.
¿Cómo puedo controlar el volumen de trazas?
Istio, a través de Envoy, actualmente admite una estrategia de muestreo basada en porcentajes para la generación de trazas. Consulte esta sección para obtener más información sobre cómo establecer esta tasa de muestreo.
¿Admite Istio el seguimiento de solicitudes para los mensajes del bus de eventos de vert.x?
Actualmente, Istio no proporciona soporte para los protocolos pub/sub y de bus de eventos. Cualquier uso de esas tecnologías es en el mejor de los casos y está sujeto a roturas.