全部產品
Search
文件中心

Application Real-Time Monitoring Service:ARMS支援Tracing協議

更新時間:Jul 06, 2024

本文介紹ARMS支援的多種Tracing協議。

EagleEye協議

EagleEye協議是ARMS自研的鏈路透傳協議,在阿里雲內部被廣泛使用。

鏈路中透傳的協議頭:

  • EagleEye-TraceID:32位字串,格式:'ea'+8位ip編碼+13位時間戳記+4位自增Id+'d'+4位pid。例如:eac0a8020216868084400006973d000a

  • EagleEye-RpcID:代表Span層級關係,例如:0、0.1、0.2、0.1.1,其中0是0.1、0.2的父Span,0.1是0.1.1的父Span。

  • EagleEye-SpanID:隨機Long型整數,相容開源冗餘欄位。

  • EagleEye-pSpanID:隨機Long型整數,相容開源冗餘欄位。

  • EagleEye-Sampled:鏈路是否採樣。

  • EagleEye-pAppName:上遊應用。

  • EagleEye-pRpc:上遊應用介面。

  • EagleEye-UserData:需要在鏈路中透傳的Baggage,格式:k1=v1&k2&v2

OpenTelemetry協議

OpenTelemetry預設使用的協議。

鏈路中使用的協議頭:

  • traceparent:格式:兩位版本號碼-32位traceId-16位parentSpanId-採樣標例如00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01

  • tracestate:需要在鏈路中透傳的Baggage。格式:k1=v1&k2&v2

Zipkin協議

開源專案ZipKin使用的協議。

鏈路中使用的協議頭:

  • X-B3-TraceId:32位TraceId。例如:0af7651916cd43dd8448eb211c80319c

  • X-B3-SpanId:16位SpanId。例如:b7ad6b7169203331

  • X-B3-ParentSpanId:16位ParentSpanId。例如:b7ad6b7169203331

  • X-B3-Sampled:採樣標識。例如:0不採樣,1採樣。

  • baggage-:需要在鏈路中透傳的Baggage。例如:baggage-k1=v1,baggage-k2=v2

Jaeger協議

開源專案Jager使用的協議。

鏈路中使用的協議頭:

  • uber-trace-id:格式:traceId:spanId:parentSpanId:flag。例如:0af7651916cd43dd8448eb211c80319c:b7ad6b7169203331:b7ad6b7169203331:1

  • uberctx-:需要在鏈路中透傳的Baggage。例如:uberctx-k1=v1,uberctx-k2=v2

Skywalking協議

開源專案Skywalking的鏈路透傳協議。

  • sw8:由8個欄位組成,各欄位之間通過短劃線(-)分隔。頭部值的最大長度(預設)小於2 K。 頭部值包含以下欄位,所有字串類型的值都需通過BASE64編碼。

    必須項:

    • 採樣(Sample):0或1。0表示上下文存在,但是可以忽略;1表示此追蹤需要採樣並發送到後端。

    • 追蹤標識(Trace Id):字串(BASE64編碼),由英文半形句號(.)分隔的三個Long類型值,表示此追蹤的唯一標識。

    • 父追蹤段ID(Parent trace segment Id):字串(BASE64編碼),全域唯一。

    • 父Span標識:從0開始的整數。此Span ID指向父追蹤段中的Span。

    • 父服務字串(BASE64編碼),長度不應小於或等於50個UTF-8編碼的字元。

    • 父服務執行個體標識字串(BASE64編碼),長度不應小於或等於50個UTF-8編碼的字元

    • 父服務的端點字串(BASE64編碼),父追蹤段中第一個入口Span的操作名長度不應小於或等於50個UTF-8編碼的字元

    • 本請求的目標地址:字串(BASE64編碼),用戶端用於訪問目標服務的網路地址(網路地址格式不一定是IP + 連接埠

    sw8樣本1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT

  • sw8-x:各欄位之間通過短劃線(-)分隔,欄位可擴充。

    追蹤模式可設定為空白、0或1,預設為空白或0,表示上下文中產生的所有Span將會被跳過分析。上下文在預設情況下傳播到上遊,除非在跟蹤過程中被更改。

ARMS鏈路透傳協議選擇

ARMS探針會自動識別當前環境使用的鏈路透傳協議,如果當前鏈路中沒有使用任何協議,則預設使用ARMS自身的鏈路透傳協議。

此處以A>B>C情境為例,A、B、C分別是不同的應用,在收到一個請求時會依次尋找當前請求是否存在ARMS、Jaeger、ZipKin、Skywalking、OpenTelemetry的協議頭,如果存在某一個協議頭,則使用該協議,如果一個都不存在,則預設使用ARMS的鏈路透傳協議透傳上下文。