追蹤記錄內容

本文簡要說明「內容」(指狀態) 和「內容傳播」(指將狀態資訊傳遞至子項作業)。對於分散式追蹤,追蹤 ID 和正在處理的範圍 ID 必須傳遞至子項作業。

子項作業會建立 span 並設定下列欄位:

  • 時距 ID:子項作業的專屬 ID。如果同一項作業執行多次,該作業就會有多個範圍,每個範圍都有專屬 ID。
  • 追蹤 ID:這個特定整體作業所屬端對端作業的專屬 ID。這個欄位的值由父項提供。
  • 父項時距 ID:父項時距的專屬 ID。 這個欄位的值由父項提供。 如果是根範圍,這個 ID 為 null

追蹤 ID、範圍 ID 和父項範圍 ID 欄位的值,可讓分散式追蹤系統正確地將範圍連結在一起,形成追蹤記錄。舉例來說,Cloud Trace 會將 span 儲存在存放區中,並使用這些 ID 欄位來識別哪些 span 組成追蹤記錄。

脈絡可能包含其他有助於分散式追蹤的狀態資訊。舉例來說,全球資訊網協會 (W3C) 標準包含父項範圍是否已取樣的相關資訊。

情境傳播通訊協定

以下各節說明特定要求通訊協定如何傳播內容。

HTTP 要求

對於 HTTP 要求,內容傳播通常是透過 HTTP 標頭 (例如 traceparenttracestate 標頭) 完成,這些標頭已由 W3C 標準化。支援追蹤內容傳播的Google Cloud 服務通常同時支援 traceparent舊版 X-Cloud-Trace-Context 標頭

建議您盡可能在應用程式中使用 traceparent 標頭。您的應用程式可能需要使用舊版 X-Cloud-Trace-Context 標頭,或支援以不同格式接收追蹤脈絡。

如果您的應用程式只支援 X-Cloud-Trace-Context 標頭,建議您更新應用程式,支援並優先使用 traceparent 標頭。您的應用程式可以繼續使用 X-Cloud-Trace-Context 標頭做為備用解決方案。

下表摘要列出這兩個標頭之間的一些重大差異:

屬性 traceparent
標頭
X-Cloud-Trace-Context
標題
分隔符 連字號 (-) 正斜線 (/) 和半形分號 (;)
時距 ID
表示法
十六進位數 小數

舊版 X-Cloud-Trace-Context 標頭

Google Cloud 使用的 X-Cloud-Trace-Context 標頭早於 W3C 規格。為確保回溯相容性,部分 Google Cloud 服務會繼續接受、產生及傳播 X-Cloud-Trace-Context 標頭。不過,這些系統可能也支援 traceparent 標頭。

X-Cloud-Trace-Context 標頭的格式如下:

X-Cloud-Trace-Context: TRACE_ID/SPAN_ID;o=OPTIONS

標頭欄位的定義如下:

  • TRACE_ID 是一個表示 128 位元數的 32 字元十六進位值。
  • SPAN_ID 是無正負號時距 ID 的 64 位元十進位表示法。
  • OPTIONS 支援 0 (未取樣的父項) 和 1 (已取樣的父項)。

gRPC 要求

如果是 gRPC 要求,則會使用 gRPC 中繼資料 (實作於 HTTP 標頭之上) 傳播內容。gRPC 應用程式可能會使用 traceparent 標頭或名為 grpc-trace-bin 的中繼資料內容鍵。

對於您擁有的元件,建議使用 traceparent 標頭。

Google Cloud 服務的脈絡傳播

Google Cloud 服務可能會在要求處理程序中擔任發起者或中介角色。舉例來說,下列服務會參與處理要求:

追蹤內容的啟動和傳播支援功能取決於特定 Google Cloud 服務。如要要求服務新增內容傳播支援功能,請使用 Google Issue Tracker。 Google Cloud

在應用程式中傳播脈絡

部分檢測程式庫 (例如 OpenTelemetry) 可以傳播包含追蹤所需資料的 context 物件。如需支援追蹤的 OpenTelemetry 程式庫清單,請參閱語言 API 和 SDK

如果您使用開放原始碼程式庫,請判斷是否提供脈絡傳播功能,以及是否需要設定。舉例來說,如果您使用 OpenTelemetry 檢測 Go 應用程式,應用程式應呼叫 SetTextMapPropagator,將內容設定為使用 W3C traceparent 格式。如需範例,請參閱「Go 檢測點範例」。

如果沒有合適的檢測程式庫,您必須確保應用程式會將追蹤內容傳播至子項作業。

後續步驟