In diesem Dokument werden kurz Kontext, der sich auf den Status bezieht, und Kontextweitergabe, die sich auf die Weitergabe von Statusinformationen an untergeordnete Vorgänge bezieht, beschrieben. Beim verteilten Tracing sind die Trace-ID und die ID des verarbeitete Span muss an untergeordnete Vorgänge übergeben werden.
Untergeordnete Vorgänge erstellen einen Span und legen die folgenden Felder fest:
- Span-ID: Eine eindeutige Kennung für den untergeordneten Vorgang. Wenn derselbe Vorgang mehrmals ausgeführt wird, gibt es mehrere Bereiche für diesen Vorgang, die jeweils eine eindeutige Kennung haben.
- Trace-ID: Die eindeutige Kennung des End-to-End-Vorgangs, in dem dieser bestimmte Gesamtvorgang stattfand. Der Wert dieses Felds wird vom übergeordneten Element bereitgestellt.
- Übergeordnete Span-ID: Die eindeutige Kennung der übergeordneten Span.
Der Wert dieses Felds wird vom übergeordneten Element bereitgestellt.
Für Haupt-Spans lautet diese ID
null
.
Die Werte der Felder „Trace-ID“, „Span-ID“ und „Übergeordnete Span-ID“ ermöglichen Das verteilte Tracing-System verknüpft die Spans korrekt miteinander, um einen Trace zu bilden. In Cloud Trace werden beispielsweise Spans in einem Repository gespeichert. Anhand dieser ID-Felder wird ermittelt, aus welchen Spans ein Trace besteht.
Der Kontext kann andere Statusinformationen enthalten, die für verteilte Tracing von Daten. Der W3C-Standard (World Wide Web Consortium) enthält beispielsweise Informationen dazu, ob für den übergeordneten Span Stichproben verwendet wurden.
Protokolle für die Kontextweitergabe
In den folgenden Abschnitten wird beschrieben, wie bestimmte Anfrageprotokolle Kontext verbreiten.
HTTP-Anfragen
Bei HTTP-Anfragen erfolgt die Kontextweitergabe in der Regel durch
HTTP-Header wie die Header traceparent
und tracestate
, die in diesem Fall
durch W3C standardisiert.
Google Cloud-Dienste, die die Weiterleitung von Trace-Kontext unterstützen, unterstützen in der Regel sowohl den traceparent
- als auch den alten X-Cloud-Trace-Context
-Header.
Wir empfehlen, wenn möglich, das
traceparent
-Header in Ihren Anwendungen. Möglicherweise muss Ihre Anwendung den alten X-Cloud-Trace-Context
-Header verwenden oder den Empfang von Trace-Kontext in einem anderen Format unterstützen.
Wenn Sie eine Anwendung haben, die nur den X-Cloud-Trace-Context
unterstützt
-Header eingeben, empfehlen wir Ihnen, Ihre Anwendung so zu aktualisieren, dass sie Support erhält.
traceparent
, zu priorisieren. Sie können den X-Cloud-Trace-Context
-Header weiterhin als Fallback-Lösung verwenden.
In der folgenden Tabelle sind einige wichtige Unterschiede zwischen den beiden Überschriften zusammengefasst:
Attribut | traceparent -Header |
X-Cloud-Trace-Context -Header |
---|---|---|
Trennzeichen | Bindestriche (-) |
Schrägstrich (/) und Semikolon (;) |
Span-ID- Darstellung |
Hexadezimal | Dezimal |
Alter X-Cloud-Trace-Context
-Header
Der von Google Cloud verwendete Header X-Cloud-Trace-Context
liegt vor dem folgenden Datum:
W3C-Spezifikation
Aus Gründen der Abwärtskompatibilität akzeptieren einige Google Cloud-Dienste weiterhin
generieren und den X-Cloud-Trace-Context
-Header weitergeben. Es ist jedoch
ist es wahrscheinlich, dass diese Systeme auch den Header traceparent
unterstützen.
Der X-Cloud-Trace-Context
-Header hat das folgende Format:
X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS
Die Felder des Headers sind so definiert:
TRACE_ID
ist ein aus 32 Zeichen bestehender hexadezimaler Wert, der für eine Zahl mit 128 Bit steht.SPAN_ID
ist eine 64-Bit-dezimal dargestellte vorzeichenlose Span-ID.OPTIONS
unterstützt0
(übergeordnete Elemente wurden nicht erfasst) und1
(übergeordnete Elemente wurden nicht erfasst).
gRPC-Anfragen
Bei gRPC-Anfragen erfolgt die Kontextweitergabe mithilfe von gRPC-Metadaten, die über HTTP-Header implementiert werden. gRPC-Anwendungen können den traceparent
-Header oder einen Metadatenkontextschlüssel namens grpc-trace-bin
verwenden.
Für Komponenten, deren Inhaber Sie sind, empfehlen wir den Header traceparent
.
Kontextweitergabe für Google Cloud-Dienste
Google Cloud-Dienste können bei Anfragen als Initiatoren oder Vermittler fungieren Datenverarbeitung. Die folgenden Dienste sind beispielsweise an der Verarbeitung von Anfragen beteiligt:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Run-Funktionen
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
Die Unterstützung für die Initiierung und Weiterleitung von Trace-Kontexten hängt vom jeweiligen Google Cloud-Dienst ab. So beantragen Sie, dass ein Google Cloud-Dienst die Kontextweitergabe unterstützt, Verwenden Sie den Google Issue Tracker.
Kontextweitergabe in Ihren Anwendungen
Einige Instrumentierungsbibliotheken
wie OpenTelemetry,
leitet automatisch ein context
-Objekt weiter, das die erforderlichen Daten enthält.
für die Nachverfolgung. Wenn Sie diese Arten von Bibliotheken verwenden,
die von Ihrer Anwendung generiert wurden, ordnungsgemäß konfiguriert sind. Eine Liste der OpenTelemetry-Bibliotheken, die Tracing unterstützen, finden Sie unter Language APIs & SDKs. Für eine Instrumentierung
ein Beispiel unter Traces und Messwerte mit Go generieren.
Wenn Sie auf eine Open-Source-Bibliothek angewiesen sind, Kontextverteilung verfügbar ist und ob eine Konfiguration erforderlich ist.
Wenn es keine passende Instrumentenbibliothek gibt, müssen Sie sicherstellen, dass Ihre Anwendung den Trace-Kontext auf untergeordnete Vorgänge zu übertragen.
Nächste Schritte
OpenTelemetry-Ressourcen: