Contexto de seguimiento

En este documento, se describe de forma breve el contexto, que se refiere al estado, y la propagación de contexto, que se refiere a pasar información de estado a operaciones secundarias. Para el seguimiento distribuido, el ID de seguimiento y el ID del intervalo que se está procesando se deben pasar a las operaciones secundarias.

Las operaciones secundarias crean un intervalo y establecen los siguientes campos:

  • ID de intervalo: Es un identificador único para la operación secundaria. Si la misma operación se ejecuta varias veces, hay varios intervalos para esa operación, cada uno con un identificador único.
  • ID de seguimiento: Es el identificador único de la operación de extremo a extremo en la que se realizó esta operación general en particular. El valor de este campo lo proporciona la entidad superior.
  • ID de intervalo superior: Es el identificador único del intervalo superior. El valor de este campo lo proporciona el elemento superior. Para los intervalos raíz, este ID es null.

Los valores de los campos de ID de seguimiento, ID de intervalo y ID de intervalo superior permiten que un sistema de seguimiento distribuido vincule correctamente los intervalos para formar un seguimiento. Por ejemplo, Cloud Trace almacena intervalos en un repositorio y usa estos campos de ID para identificar qué intervalos componen un registro.

El contexto puede incluir otra información de estado que es útil para el seguimiento distribuido. Por ejemplo, el estándar del World Wide Web Consortium (W3C) incluye información sobre si se tomó una muestra del intervalo superior.

Protocolos para la propagación del contexto

En las siguientes secciones, se describe cómo los protocolos de solicitud específicos propagan el contexto.

Solicitudes HTTP

En el caso de las solicitudes HTTP, la propagación de contexto suele realizarse a través de encabezados HTTP, como los encabezados traceparent y tracestate, que estándarizó el W3C. Los servicios deGoogle Cloud que admiten la propagación de contexto de seguimiento suelen admitir tanto traceparent como el encabezado X-Cloud-Trace-Context heredado.

Cuando sea posible, te recomendamos que uses el encabezado traceparent en tus aplicaciones. Es posible que tu aplicación deba usar el encabezado X-Cloud-Trace-Context heredado o que deba admitir recibir el contexto de seguimiento en un formato diferente.

Si tienes una aplicación que solo admite el encabezado X-Cloud-Trace-Context, te recomendamos que la actualices para que admita y priorice el encabezado traceparent. Tu aplicación puede seguir usando el encabezado X-Cloud-Trace-Context como solución de resguardo.

En la siguiente tabla, se resumen algunas diferencias significativas entre los dos encabezados:

Atributo Encabezado traceparent
Encabezado X-Cloud-Trace-Context
Separadores guiones (-) barra diagonal (/) y punto y coma (;)
Representación
del ID de intervalo
Hexadecimal Decimal

Encabezado X-Cloud-Trace-Context heredado

El encabezado X-Cloud-Trace-Context que usa Google Cloud es anterior a la especificación del W3C. Para la retrocompatibilidad, algunos Google Cloud servicios 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 firmar.
  • OPTIONS admite 0 (no se muestreó el elemento superior) y 1 (se muestreó el elemento superior).

Solicitudes de gRPC

En el caso de las solicitudes de gRPC, la propagación de contexto se realiza con los metadatos de gRPC, que se implementan sobre los encabezados HTTP. Las aplicaciones de gRPC pueden usar el encabezado traceparent o una clave de contexto de metadatos llamada grpc-trace-bin.

Para 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:

La compatibilidad con la iniciación y propagación del contexto de seguimiento depende del servicio Google Cloud en particular. Para solicitar que un servicio Google Cloud agregue compatibilidad con la propagación de contexto, usa la Herramienta de seguimiento de errores de Google.

Propagación del contexto en tus aplicaciones

Algunas bibliotecas de instrumentación, como OpenTelemetry, pueden propagar un objeto context que contiene los datos necesarios para el seguimiento. Para obtener una lista de las bibliotecas de OpenTelemetry que admiten el seguimiento, consulta APIs y SDK de lenguajes.

Si dependes de una biblioteca de código abierto, determina si la propagación de contexto está disponible y si se requiere la configuración. Por ejemplo, si usas OpenTelemetry para instrumentar una app de Go, esta debe llamar a SetTextMapPropagator, que configura el contexto para usar el formato traceparent de W3C. Para ver un ejemplo de instrumentación, consulta Genera seguimientos y métricas con Go.

Cuando no hay una biblioteca de instrumentación adecuada, debes asegurarte de que tu aplicación propague el contexto de seguimiento a las operaciones secundarias.

¿Qué sigue?