全部產品
Search
文件中心

ApsaraMQ for RocketMQ:RocketMQ全鏈路追蹤解決方案

更新時間:Jul 27, 2024

在分布式應用系統中,多個服務間的互動涉及複雜的網路通訊和資料轉送,往往一次請求需要多個內部服務間的相互調用才能完成,任何一個環節出現問題都可能導致外部服務任務執行失敗或延時,且很難快速定位問題根源。鏈路追蹤功能可在多個服務進行互動時記錄請求在系統的傳輸過程,並提供詳細的日誌和效能資料,雲訊息佇列 RocketMQ 版支援將符合OpenTelemetry標準的TraceData Integration至阿里雲的鏈路追蹤服務中,協助您快速診斷異常問題。

Trace定義

雲訊息佇列 RocketMQ 版的Trace資料符合OpenTelemetry標準下,訊息領域的span語義約定。詳細資料,請參見opentelemetry-specification

Messaging span定義

Messaging span定義了各span之間的拓撲關係,包括訊息發送、接收和處理的不同span之間的父子關係及連結關係。更多資訊,請參見Semantic Conventions of Messaging

雲訊息佇列 RocketMQ 版涉及的span如下:

span

說明

send

訊息的發送過程。span以一次發送行為開始,以發送成功、失敗或拋異常結束。

訊息發送的內部重試會被記錄成多條span。

receive

消費者接收訊息的長輪詢過程,與長輪詢的生命週期保持一致。

receive span預設不啟用,若要啟用,則需要在運行時增加-Dotel.instrumentation.messaging.experimental.receive-telemetry.enabled,並將參數值設定為true

process

PushConsumer中MessageListener介面對訊息的處理過程,span以訊息進入MessageListener為開始,離開MessageListener時結束。

以上幾個span的關係如下:

span關係

  • receive span未啟用時:process span為send span的子級。

  • receive span啟用時:process span為receive span的子級,同時會連結到send span。

Messaging attributes定義

訊息領域的span語義約定中規定了隨span攜帶的通用屬性,包括:

  • messaging.message.id:訊息ID,訊息的唯一識別碼。

  • messaging.destination:訊息發送的目的地,通常是指某個隊列或主題。

  • messaging.operation:對訊息的操作類型,例如,發送、接收、確認等。

更多屬性,請參見Messaging attributes

對於不同的訊息產品,會有自己特定的行為和屬性。雲訊息佇列 RocketMQ 版特定的屬性如下:

屬性

取實值型別

說明

messaging.rocketmq.client_group

string

消費者的負載平衡組。

messaging.rocketmq.client_id

string

用戶端的唯一識別碼。

messaging.rocketmq.message.delivery_timestamp

int

定時訊息的定時時間。

messaging.rocketmq.message.group

string

順序訊息的Group分組。

messaging.rocketmq.message.type

string

訊息類型。取值如下:

messaging.rocketmq.message.tag

string

訊息的過濾標籤。消費者可通過Tag對訊息進行過濾,僅接收指定標籤的訊息。

messaging.rocketmq.message.keys

string[]

訊息的索引鍵,可通過設定不同的Key區分訊息和快速尋找訊息。

使用限制

  • 目前僅Java SDK用戶端支援上報Trace資料至鏈路追蹤服務。SDK版本資訊,請參見Java SDK版本說明

  • 事務訊息僅支援追蹤訊息生產相關的Trace資料,暫不支援追蹤訊息提交或訊息復原的Trace資料。

  • 僅支援追蹤PushConsumer消費者相關的Trace資料,暫不支援SimpleConsumer相關的Trace資料。更多資訊,請參見消費者分類

RocketMQ TraceData Integration方案

雲訊息佇列 RocketMQ 版需要將符合OpenTelemetry標準的Trace資料上報至鏈路追蹤的服務端,由鏈路追蹤的服務端完成Trace資料的彙總計算及可視化展示。

鏈路追蹤服務端您可以選擇自行搭建,也可以選擇阿里雲提供的鏈路追蹤服務,雲訊息佇列 RocketMQ 版支援將TraceData Integration至阿里雲Log Service鏈路追蹤ARMS鏈路追蹤服務中。

SLS Trace全鏈路解決方案

ARMS Trace全鏈路解決方案

具體操作,請參見ARMS OpenTelemetry Trace接入