Este documento descreve brevemente o contexto, que se refere ao estado, e a propagação de contexto, que se refere à transmissão de informações de estado para operações filhas. Para o rastreamento distribuído, o ID do rastreamento e o ID do intervalo que está sendo processado precisam ser transmitidos para as operações filhas.
As operações filhas criam um período e definem os seguintes campos:
- ID da extensão: um identificador exclusivo da operação filha. Se a mesma operação for executada várias vezes, haverá vários spans para essa operação, cada um com um identificador exclusivo.
- ID do rastreamento: o identificador exclusivo da operação completa em que essa operação geral específica ocorreu. O valor desse campo é fornecido pelo pai.
- ID do período pai: o identificador exclusivo do período pai.
O valor desse campo é fornecido pelo pai.
Para períodos raiz, esse ID é
null
.
Os valores dos campos de ID do trace, ID da extensão e ID da extensão pai permitem que um sistema de rastreamento distribuído vincule corretamente as extensões para formar um trace. Por exemplo, o Cloud Trace armazena spans em um repositório e usa esses campos de ID para identificar quais spans compõem um rastro.
O contexto pode incluir outras informações de estado que são úteis para o rastreamento distribuído. Por exemplo, o padrão do World Wide Web Consortium (W3C) inclui informações sobre se o período pai foi amostrado.
Protocolos para propagação de contexto
As seções a seguir descrevem como protocolos de solicitação específicos propagam o contexto.
Solicitações HTTP
Para solicitações HTTP, a propagação de contexto geralmente é feita por
cabeçalhos HTTP, como traceparent
e tracestate
, que foram
padronizados pelo W3C.
Os serviçosGoogle Cloud que oferecem suporte à propagação de contexto de rastreamento geralmente oferecem suporte
a traceparent
e ao cabeçalho X-Cloud-Trace-Context
legado.
Sempre que possível, recomendamos o uso do
cabeçalho traceparent
nos seus aplicativos. Talvez seu
aplicativo precise usar o cabeçalho X-Cloud-Trace-Context
legado ou
precisa oferecer suporte ao recebimento de contexto de rastreamento em um formato diferente.
Se você tiver um aplicativo que só oferece suporte ao cabeçalho X-Cloud-Trace-Context
,
recomendamos que atualize o aplicativo para oferecer suporte e
priorizar o cabeçalho traceparent
. Seu aplicativo pode continuar usando o
cabeçalho X-Cloud-Trace-Context
como uma solução alternativa.
A tabela a seguir resume algumas diferenças significativas entre os dois cabeçalhos:
Atributo | Cabeçalho traceparent |
Cabeçalho X-Cloud-Trace-Context |
---|---|---|
Separadores | hifens (-) |
barra para a direita (/) e ponto e vírgula (;) |
Representação do ID do período |
Codificação | Decimal |
Cabeçalho X-Cloud-Trace-Context
legado
O cabeçalho X-Cloud-Trace-Context
usado por Google Cloud é anterior à
especificação do W3C.
Para oferecer compatibilidade com versões anteriores, alguns serviços Google Cloud continuam aceitando,
gerando e propagando o cabeçalho X-Cloud-Trace-Context
. No entanto, é
provável que esses sistemas também ofereçam suporte ao cabeçalho traceparent
.
O cabeçalho X-Cloud-Trace-Context
tem o seguinte formato:
X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS
Os campos do cabeçalho são definidos da seguinte maneira:
TRACE_ID
é um valor hexadecimal de 32 caracteres que representa um número de 128 bits.SPAN_ID
é uma representação decimal de 64 bits do ID de período não assinado.OPTIONS
é compatível com0
(o pai não foi amostrado) e1
(o pai foi amostrado).
Solicitações gRPC
Para solicitações gRPC, a propagação de contexto é feita usando
metadados do gRPC, que é implementado em cima dos cabeçalhos HTTP.
Os aplicativos gRPC podem usar o cabeçalho traceparent
ou uma
chave de contexto de metadados chamada grpc-trace-bin
.
Para componentes que você possui, recomendamos o uso do cabeçalho traceparent
.
Propagação de contexto para Google Cloud serviços
Os serviçosGoogle Cloud podem atuar como iniciadores ou intermediários no processamento de solicitações. Por exemplo, os seguintes serviços participam do processamento de solicitações:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Run functions
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
O suporte para a iniciação e a propagação do contexto de rastreamento depende do serviço Google Cloud específico. Para solicitar que um Google Cloud serviço adicione suporte à propagação de contexto, use o Rastreador de problemas do Google.
Propagação de contexto nos seus apps
Algumas bibliotecas de instrumentação, como o OpenTelemetry,
podem propagar um objeto context
que contém os dados necessários para o rastreamento.
Para conferir uma lista de bibliotecas do OpenTelemetry que oferecem suporte ao rastreamento, consulte
APIs e SDKs de linguagem.
Se você usa uma biblioteca de código aberto, determine se
a propagação de contexto está disponível e se a configuração é necessária.
Por exemplo, se você usar o OpenTelemetry para instrumentar um app Go, ele
precisa chamar SetTextMapPropagator
, que configura o contexto para usar o
formato traceparent
do W3C. Para conferir um exemplo de instrumentação, consulte
Gerar traces e métricas com o Go.
Quando não há uma biblioteca de instrumentação adequada, é necessário garantir que o aplicativo propague o contexto de rastreamento para operações filhas.
A seguir
Saiba mais sobre a amostragem de rastros.
Recursos do OpenTelemetry: