Tous les produits
Search
Centre de documentation

Application Real-Time Monitoring Service:Protocoles de propagation de trace pris en charge

Dernière mise à jour :Aug 27, 2026

La propagation du contexte de trace transmet les métadonnées de traçage (identifiants de trace, identifiants de span et décisions d'échantillonnage) entre les services d'une application distribuée. Cela permet de corréler tous les spans d'une requête au sein d'une seule trace de bout en bout.

Application Real-Time Monitoring Service (ARMS) prend en charge cinq protocoles de propagation de trace.

Protocole Type Préfixe d'en-tête
EagleEye Propriétaire Alibaba Cloud EagleEye-
W3C Trace Context Standard W3C traceparent, tracestate
Zipkin (B3) Open source X-B3-
Jaeger Open source uber-trace-id
SkyWalking Open source sw8

Protocole EagleEye

EagleEye est un protocole propriétaire d'Alibaba Cloud développé par ARMS et largement utilisé dans les services Alibaba Cloud.

Champs d'en-tête

En-tête Description Exemple
EagleEye-TraceID Identifiant de trace (chaîne aléatoire de 32 bits). --
EagleEye-RpcID Relation hiérarchique entre les spans. 0 représente le span parent ; 0.1 et 0.2 sont des spans enfants de 0 ; 0.1.1 est un enfant de 0.1. 0, 0.1, 0.2, 0.1.1
EagleEye-SpanID Identifiant de span (entier long aléatoire). Compatible avec les champs redondants open source. --
EagleEye-pSpanID Identifiant du span parent (entier long aléatoire). Compatible avec les champs redondants open source. --
EagleEye-Sampled Indicateur d'échantillonnage. --
EagleEye-pAppName Nom de l'application en amont. --
EagleEye-pRpc Interface de l'application en amont. --
EagleEye-UserData Données de bagage propagées avec la trace. k1=v1&k2=v2

Protocole W3C Trace Context

La spécification W3C Trace Context est une norme neutre vis-à-vis des fournisseurs, définie par le World Wide Web Consortium (W3C).

Champs d'en-tête

En-tête Format Exemple
traceparent <version>-<trace-id>-<parent-span-id>-<Sampling identifier> (version sur 2 bits, ID de trace sur 32 bits, ID de span parent sur 16 bits, identifiant d'échantillonnage) 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
tracestate Données de bagage propagées avec la trace. k1=v1&k2=v2

Protocole Zipkin (B3)

Le format de propagation B3 est utilisé par Zipkin.

Champs d'en-tête

En-tête Description Exemple
X-B3-TraceId Identifiant de trace sur 32 bits. 0af7651916cd43dd8448eb211c80319c
X-B3-SpanId Identifiant de span sur 16 bits. b7ad6b7169203331
X-B3-ParentSpanId Identifiant du span parent sur 16 bits. b7ad6b7169203331
X-B3-Sampled Indicateur d'échantillonnage. 1 = échantillonné, 0 = non échantillonné. 1
baggage- Préfixe des données de bagage. Ajoutez le nom de la clé après le préfixe. baggage-k1=v1, baggage-k2=v2

Protocole Jaeger

Le format de propagation Jaeger est utilisé par Jaeger.

Champs d'en-tête

En-tête Format Exemple
uber-trace-id <trace-id>:<span-id>:<parent-span-id>:<flags> 0af7651916cd43dd8448eb211c80319c:b7ad6b7169203331:b7ad6b7169203331:1
uberctx- Préfixe des données de bagage. Ajoutez le nom de la clé après le préfixe. uberctx-k1=v1, uberctx-k2=v2

Protocole SkyWalking

Le format de propagation SkyWalking est utilisé par Apache SkyWalking.

En-tête sw8

L'en-tête sw8 se compose de huit champs séparés par des traits d'union. Toutes les valeurs de chaîne doivent être encodées en Base64. La longueur totale de l'en-tête doit être inférieure à 2 000 caractères.

Champ Position Description
Sample 1 0 = le contexte existe mais peut être ignoré. 1 = échantillonner et envoyer au backend.
Trace ID 2 Identifiant de trace unique. Chaîne encodée en Base64 composée de trois valeurs longues séparées par des points (.).
Parent trace segment ID 3 Identifiant de segment globalement unique. Chaîne encodée en Base64.
Parent span ID 4 0 ou un entier positif.
Parent service 5 Chaîne encodée en Base64. Doit dépasser 50 caractères UTF-8.
Parent service instance ID 6 Chaîne encodée en Base64. Doit dépasser 50 caractères UTF-8.
Parent service endpoint 7 Endpoint du premier span d'entrée dans le segment de trace parent. Chaîne encodée en Base64. Doit dépasser 50 caractères UTF-8.
Destination URL 8 URL du service de destination. Le format peut différer de <IP address><Port number>. Chaîne encodée en Base64.

Exemple :

1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT

En-tête sw8-x

L'en-tête sw8-x transporte des champs d'extension, également séparés par des traits d'union. Les champs peuvent être étendus selon les besoins.

Le mode de suivi accepte null, 0 ou 1 :

  • null ou 0 (par défaut) : Tous les spans générés dans le contexte actuel ne sont pas analysés. Le contexte est propagé en amont par défaut, sauf modification pendant le suivi.

  • 1 : Les spans sont analysés.

Fonctionnement

L'agent ARMS sélectionne automatiquement un protocole de propagation de trace en fonction des en-têtes présents dans chaque requête entrante.

Flux de sélection

Prenons l'exemple d'une trace qui traverse les services A, B et C. Lorsque chaque service reçoit une requête, l'agent ARMS applique la logique suivante :

  1. Analysez les en-têtes de requête pour détecter les champs spécifiques au protocole. L'analyse suit un ordre de priorité fixe :

    Version de l'agent ARMS Ordre de priorité (du plus élevé au plus faible)
    v4.5.x et ultérieures W3C > EagleEye > SkyWalking > Jaeger > Zipkin
    v4.x à v4.4.x EagleEye > W3C > SkyWalking > Jaeger > Zipkin
    Antérieures à v4.x EagleEye > Jaeger > Zipkin > SkyWalking > W3C
  2. Si un en-tête correspondant est trouvé, l'agent restaure le contexte de trace à partir de la requête et utilise le même protocole pour propager le contexte vers les services en aval.

  3. Si aucun en-tête correspondant n'est trouvé, l'agent crée un nouveau contexte de trace et le propage en utilisant le protocole de priorité la plus élevée. Par défaut, il s'agit du protocole EagleEye.

Personnaliser la priorité des protocoles

Pour modifier la priorité par défaut des protocoles, accédez à Configuration > Custom Configurations et mettez à jour la section Trace context propagation protocol settings. Pour plus de détails, consultez Paramètres du protocole de propagation du contexte de trace.