In diesem Dokument wird der Kontext kurz beschrieben, der sich auf den Status und die der Kontextweitergabe, d. h. die Weitergabe von Statusinformationen an untergeordnete Vorgänge. 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 Spans für diesen Vorgang erstellen, die jeweils eine eindeutige Kennung haben.
- Trace-ID: Die eindeutige Kennung des End-to-End-Vorgangs, in dem die bestimmten gesamten Vorgang stattgefunden hat. Der Wert dieses Felds wird vom übergeordneten Element bereitgestellt.
- ID des übergeordneten Spans: Die eindeutige Kennung des übergeordneten Spans.
Der Wert dieses Felds wird vom übergeordneten Element bereitgestellt.
Für Haupt-Spans lautet diese ID
null
.
Anhand der Werte der Felder „Trace-ID“, „Span-ID“ und „Übergeordnete Span-ID“ kann ein verteiltes Trace-System Spans korrekt miteinander verknüpfen, um einen Trace zu bilden. Cloud Trace speichert beispielsweise Spans in einem Repository und verwendet diese ID-Felder zur Identifizierung der Spans, aus denen ein Trace besteht.
Der Kontext kann auch andere Statusinformationen enthalten, die für die verteilte Fehlersuche nützlich sind. Der W3C-Standard (World Wide Web Consortium) enthält beispielsweise Informationen dazu, ob der übergeordnete Span beprobt wurde.
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 Weitergabe von Trace-Kontext unterstützen, unterstützen in der Regel
sowohl den traceparent
- als auch den alten X-Cloud-Trace-Context
-Header.
Wir empfehlen, nach Möglichkeit den traceparent
-Header in Ihren Anwendungen zu verwenden. Ihr
Anwendung muss möglicherweise den alten X-Cloud-Trace-Context
-Header verwenden oder
muss möglicherweise 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. Ihre App kann weiterhin den
X-Cloud-Trace-Context
-Header als Fallback-Lösung.
In der folgenden Tabelle sind einige wesentliche Unterschiede die beiden Überschriften:
Attribut | traceparent -Header |
X-Cloud-Trace-Context -Header |
---|---|---|
Trennzeichen | Bindestriche (-) |
Schrägstrich (/) und Semikolon (;) |
Span-ID- Darstellung |
Hexadezimal | Dezimal |
Legacy-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 Header X-Cloud-Trace-Context
hat folgendes Format:
X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS
Die Felder des Headers sind wie folgt definiert:
TRACE_ID
ist ein aus 32 Zeichen bestehender hexadezimaler Wert, der für eine Zahl mit 128 Bit steht.SPAN_ID
ist eine dezimale 64-Bit-Darstellung der Span-ID ohne Vorzeichen.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-Headern implementiert werden.
gRPC-Anwendungen können den Header traceparent
oder einen
Metadatenkontextschlüssel grpc-trace-bin
aufgerufen.
Für Komponenten, deren Inhaber Sie sind, empfehlen wir die Verwendung des Headers traceparent
.
Kontextweitergabe für Google Cloud-Dienste
Google Cloud-Dienste können bei Anfragen als Initiatoren oder Vermittler fungieren zu verarbeiten. Beispielsweise ist bekannt, dass die folgenden Dienste an Folgendem teilnehmen: zu verarbeitenden Anfragen:
- Apigee
- App Engine
- Cloud Endpoints
- Cloud Run-Funktionen
- Cloud Load Balancing
- Cloud Run
- Cloud Scheduler
- Cloud Tasks
- Pub/Sub
Die Initiierung und Weitergabe von Trace-Kontext wird unterstützt vom jeweiligen Google Cloud-Dienst abhängig. So beantragen Sie, dass ein Google Cloud-Dienst die Kontextweitergabe unterstützt, Verwenden Sie den Google Issue Tracker.
Kontextverbreitung 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 Bibliotheken verwenden, sind die von Ihrer Anwendung generierten Bereiche richtig konfiguriert. 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 eine Open-Source-Bibliothek verwenden, prüfen Sie, ob die Kontextweitergabe 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: