En este documento se describe brevemente el contexto, que hace referencia al estado, y la propagación del contexto, que hace referencia a la transferencia de información de estado a operaciones secundarias. En el caso del rastreo distribuido, el ID de rastreo y el ID del intervalo que se está procesando deben enviarse a las operaciones secundarias.
Las operaciones secundarias crean un intervalo y definen los siguientes campos:
- ID de intervalo: identificador único de la operación secundaria. Si se ejecuta la misma operación varias veces, habrá varios intervalos para esa operación, cada uno con un identificador único.
- ID de seguimiento: identificador único de la operación de extremo a extremo en la que se ha llevado a cabo esta operación general concreta. El valor de este campo lo proporciona el elemento superior.
- ID de intervalo principal: identificador único del intervalo principal.
El valor de este campo lo proporciona el elemento superior.
En el caso de los intervalos raíz, este ID es
null
.
Los valores de los campos de ID de rastreo, ID de intervalo e ID de intervalo superior permiten que un sistema de rastreo distribuido vincule correctamente los intervalos para formar un rastreo. Por ejemplo, Cloud Trace almacena intervalos en un repositorio y usa estos campos de ID para identificar qué intervalos componen un rastreo.
El contexto puede incluir otra información de estado que sea útil para el seguimiento distribuido. Por ejemplo, el estándar del Consorcio World Wide Web (W3C) incluye información sobre si el intervalo principal se muestreó.
Protocolos para la propagación del contexto
En las siguientes secciones se describe cómo propagan el contexto los protocolos de solicitud específicos.
Solicitudes HTTP
En las solicitudes HTTP, la propagación del contexto se suele llevar a cabo mediante encabezados HTTP, como los encabezados traceparent
y tracestate
, que estandarizó el W3C.
Los serviciosGoogle Cloud que admiten la propagación del contexto de rastreo suelen admitir tanto el encabezado traceparent
como el encabezado X-Cloud-Trace-Context
antiguo.
Cuando sea posible, te recomendamos que utilices el encabezado traceparent
en tus aplicaciones. Es posible que tu aplicación tenga que usar el encabezado X-Cloud-Trace-Context
antiguo o que tenga que admitir la recepción del contexto de rastreo en otro formato.
Si tienes una aplicación que solo admite el encabezado X-Cloud-Trace-Context
, te recomendamos que la actualices para que admita y dé prioridad al encabezado traceparent
. Tu aplicación puede seguir usando el encabezado X-Cloud-Trace-Context
como solución alternativa.
En la siguiente tabla se resumen algunas diferencias significativas entre los dos encabezados:
Atributo | Encabezado traceparent |
X-Cloud-Trace-Context encabezado |
---|---|---|
Separadores | guiones (-) |
barra inclinada (/) y punto y coma (;) |
Representación de Span ID |
Hexadecimal | Decimal |
Encabezado X-Cloud-Trace-Context
antiguo
El encabezado X-Cloud-Trace-Context
que usa Google Cloud es anterior a la especificación del W3C.
Para mantener la compatibilidad con versiones anteriores, algunos servicios de Google Cloud siguen aceptando, generando y propagando el encabezado X-Cloud-Trace-Context
. Sin embargo, es probable que estos sistemas también admitan el encabezado traceparent
.
El encabezado X-Cloud-Trace-Context
tiene el siguiente formato:
X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS
Los campos del encabezado se definen de la siguiente manera:
TRACE_ID
es un valor hexadecimal de 32 caracteres que representa un número de 128 bits.SPAN_ID
es una representación decimal de 64 bits del ID de intervalo sin signo.OPTIONS
admite0
(no se ha tomado una muestra del elemento superior) y1
(se ha tomado una muestra del elemento superior).
Solicitudes gRPC
En las solicitudes gRPC, la propagación del contexto se realiza mediante metadatos de gRPC, que se implementan sobre los encabezados HTTP. Las aplicaciones gRPC pueden usar el encabezado traceparent
o una clave de contexto de metadatos llamada grpc-trace-bin
.
En el caso de los componentes que te pertenecen, te recomendamos que uses el encabezado traceparent
.
Propagación del contexto para los servicios de Google Cloud
Los servicios deGoogle Cloud pueden actuar como iniciadores o intermediarios en el procesamiento de solicitudes. Por ejemplo, se sabe que los siguientes servicios participan en el procesamiento de solicitudes:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
La compatibilidad con la iniciación y la propagación del contexto de rastreo depende del Google Cloud servicio concreto. Para solicitar que un Google Cloud servicio añada compatibilidad con la propagación de contexto, usa Google Issue Tracker.
Propagación del contexto en tus aplicaciones
Algunas bibliotecas de instrumentación, como OpenTelemetry, pueden propagar un objeto context
que contenga los datos necesarios para el seguimiento.
Para ver una lista de las bibliotecas de OpenTelemetry que admiten el seguimiento, consulta APIs y SDKs de lenguajes.
Si utilizas una biblioteca de código abierto, determina si la propagación de contexto está disponible y si es necesario configurarla.
Por ejemplo, si usas OpenTelemetry para instrumentar una aplicación Go, tu aplicación debería llamar a SetTextMapPropagator
, que configura el contexto para usar el formato traceparent
de W3C. Para ver un ejemplo, consulta Instrumentación de Go de muestra.
Cuando no haya una biblioteca de instrumentación adecuada, debes asegurarte de que tu aplicación propague el contexto de la traza a las operaciones secundarias.
Siguientes pasos
Consulta información sobre el muestreo de trazas.
Recursos de OpenTelemetry: