RocketMQ全链路追踪解决方案

在分布式应用系统中,多个服务间的交互涉及复杂的网络通信和数据传输,往往一次请求需要多个内部服务间的相互调用才能完成,任何一个环节出现问题都可能导致外部服务任务执行失败或延时,且很难快速定位问题根源。链路追踪功能可在多个服务进行交互时记录请求在系统的传输过程,并提供详细的日志和性能数据,云消息队列 RocketMQ 版支持将符合OpenTelemetry标准的Trace数据集成至阿里云的链路追踪服务中,帮助您快速诊断异常问题。

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 Trace数据集成方案

云消息队列 RocketMQ 版需要将符合OpenTelemetry标准的Trace数据上报至链路追踪的服务端,由链路追踪的服务端完成Trace数据的聚合计算及可视化展示。

链路追踪服务端您可以选择自行搭建,也可以选择阿里云提供的链路追踪服务,云消息队列 RocketMQ 版支持将Trace数据集成至阿里云日志服务链路追踪ARMS链路追踪服务中。

SLS Trace全链路解决方案

ARMS Trace全链路解决方案

具体操作,请参见ARMS OpenTelemetry Trace接入