A propagação de contexto de rastreamento transfere metadados de rastreamento — IDs de rastreamento, IDs de span e decisões de amostragem — entre services em uma aplicação distribuída. Isso permite correlacionar todos os spans de uma solicitação em um único rastreamento de ponta a ponta.
O Application Real-Time Monitoring Service (ARMS) oferece suporte a cinco protocolos de propagação de rastreamento.
|
Protocolo |
Tipo |
Prefixo do header |
|
EagleEye |
Proprietário da Alibaba Cloud |
|
|
W3C Trace Context |
Padrão W3C |
|
|
Zipkin (B3) |
Open source |
|
|
Jaeger |
Open source |
|
|
SkyWalking |
Open source |
|
Protocolo EagleEye
O EagleEye é um protocolo proprietário da Alibaba Cloud, desenvolvido pelo ARMS e amplamente utilizado nos services da Alibaba Cloud.
Campos de header
|
Header |
Descrição |
Exemplo |
|
|
Identificador de rastreamento (string aleatória de 32 bits). |
-- |
|
|
Relação hierárquica entre spans. |
|
|
|
Identificador de span (inteiro longo aleatório). Compatível com campos redundantes de open source. |
-- |
|
|
Identificador do span pai (inteiro longo aleatório). Compatível com campos redundantes de open source. |
-- |
|
|
Sinalizador de amostragem. |
-- |
|
|
Nome da aplicação upstream. |
-- |
|
|
Interface da aplicação upstream. |
-- |
|
|
Dados de baggage propagados com o rastreamento. |
|
Protocolo W3C Trace Context
A especificação W3C Trace Context é um padrão neutro em relação a fornecedores, definido pelo World Wide Web Consortium (W3C).
Campos de header
|
Header |
Formato |
Exemplo |
|
|
|
|
|
|
Dados de baggage propagados com o rastreamento. |
|
Protocolo Zipkin (B3)
O formato de propagação B3 é utilizado pelo Zipkin.
Campos de header
|
Header |
Descrição |
Exemplo |
|
|
Identificador de rastreamento de 32 bits. |
|
|
|
Identificador de span de 16 bits. |
|
|
|
Identificador do span pai de 16 bits. |
|
|
|
Sinalizador de amostragem. |
|
|
|
Prefixo para dados de baggage. Adicione o nome da chave após o prefixo. |
|
Protocolo Jaeger
O formato de propagação Jaeger é utilizado pelo Jaeger.
Campos de header
|
Header |
Formato |
Exemplo |
|
|
|
|
|
|
Prefixo para dados de baggage. Adicione o nome da chave após o prefixo. |
|
Protocolo SkyWalking
O formato de propagação SkyWalking é utilizado pelo Apache SkyWalking.
Header sw8
O header sw8 contém oito campos separados por hífens. Todos os valores do tipo string devem estar codificados em Base64. O comprimento total do header deve ser inferior a 2.000 caracteres.
|
Campo |
Posição |
Descrição |
|
Sample |
1 |
|
|
Trace ID |
2 |
Identificador único de rastreamento. String codificada em Base64 composta por três valores longos separados por pontos ( |
|
Parent trace segment ID |
3 |
Identificador de segmento globalmente único. String codificada em Base64. |
|
Parent span ID |
4 |
|
|
Parent service |
5 |
String codificada em Base64. Deve exceder 50 caracteres UTF-8. |
|
Parent service instance ID |
6 |
String codificada em Base64. Deve exceder 50 caracteres UTF-8. |
|
Parent service endpoint |
7 |
Endpoint do primeiro span de entrada no segmento de rastreamento pai. String codificada em Base64. Deve exceder 50 caracteres UTF-8. |
|
Destination URL |
8 |
URL do service de destino. O formato pode diferir de |
Exemplo:
1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT
Header sw8-x
O header sw8-x transporta campos de extensão, também separados por hífens. Os campos podem ser estendidos conforme necessário.
O modo de rastreamento aceita null, 0 ou 1:
nullou0(padrão): Nenhum span gerado no contexto atual será analisado. O contexto é propagado para upstream por padrão, a menos que haja alteração durante o rastreamento.1: Os spans são analisados.
Funcionamento
O agente do ARMS seleciona automaticamente o protocolo de propagação de rastreamento com base nos headers presentes em cada solicitação recebida.
Fluxo de seleção
Considere um rastreamento que passa pelos services A, B e C. Ao receber uma solicitação, o agente do ARMS segue esta lógica:
-
Verifique os headers da solicitação em busca de campos específicos de protocolo. A verificação segue uma ordem de prioridade fixa:
Versão do agente ARMS
Ordem de prioridade (da maior para a menor)
v4.5.x e posteriores
W3C > EagleEye > SkyWalking > Jaeger > Zipkin
v4.x até v4.4.x
EagleEye > W3C > SkyWalking > Jaeger > Zipkin
Anteriores à v4.x
EagleEye > Jaeger > Zipkin > SkyWalking > W3C
Caso encontre um header correspondente, o agente restaura o contexto de rastreamento da solicitação e utiliza o mesmo protocolo para propagar o contexto aos services downstream.
Se nenhum header correspondente for encontrado, o agente cria um novo contexto de rastreamento e o propaga usando o protocolo de maior prioridade. Por padrão, trata-se do protocolo EagleEye.
Personalizar a prioridade do protocolo
Para alterar a prioridade padrão do protocolo, acesse Configuration > Custom Configurations e atualize a seção Trace context propagation protocol settings. Para mais detalhes, consulte Trace context propagation protocol settings.