09.6自动插桩 消息队列追踪

分类: 后端集成 Java Spring Boot OpenTelemetry

自动插桩:消息队列追踪

欢迎回到第 9 章的学习。在上一节,我们学习了数据库查询追踪。现在我们要学习消息队列追踪,这对于追踪微服务间的异步通信非常重要。

本节将学习:Kafka 集成、RabbitMQ 集成、以及消息追踪。

Kafka 集成

如何添加 Kafka 插桩依赖? 在 pom.xml 中添加

opentelemetry-kafka-clients-2.6
依赖。

代码示例:

<!-- Kafka Instrumentation dependency -->
<dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-kafka-clients-2.6</artifactId>
    <version>${opentelemetry.version}</version>
</dependency>

如何配置 Kafka Producer 和 Consumer? 配置 Kafka Producer 和 Consumer,发送和接收消息。

如何验证消息追踪? 在 Grafana Tempo 中查看 Trace 数据。

Trace Context 传播: 从 Producer 到 Consumer 的完整链路,Trace Context 在消息中传播。

RabbitMQ 集成

如何添加 RabbitMQ 插桩依赖? 在 pom.xml 中添加

opentelemetry-rabbitmq-2.7
依赖。

代码示例:

<!-- RabbitMQ Instrumentation dependency -->
<dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-rabbitmq-2.7</artifactId>
    <version>${opentelemetry.version}</version>
</dependency>

如何配置 RabbitMQ Publisher 和 Consumer? 配置 RabbitMQ Publisher 和 Consumer,发送和接收消息。

如何验证消息追踪? 在 Grafana Tempo 中查看 Trace 数据。

Trace Context 传播: 从 Publisher 到 Consumer 的完整链路,Trace Context 在消息中传播。

消息追踪

消息追踪包含哪些属性呢?

Kafka 消息属性:

  • messaging.system: kafka。
  • messaging.destination.name: topic-name。
  • messaging.destination.partition: partition-number。
  • messaging.kafka.message.key: message-key。

RabbitMQ 消息属性:

  • messaging.system: rabbitmq。
  • messaging.destination.name: queue-name。
  • messaging.destination.exchange: exchange-name。
  • messaging.rabbitmq.routing_key: routing-key。

这些属性由 OpenTelemetry 自动添加。

可以使用 TraceQL 查询:

{messaging.system="kafka"}
{messaging.system="rabbitmq"}

Trace Context 传播: 从 Producer/Publisher 到 Consumer 的完整链路。

本节小结

在本节中,我们学习了自动插桩:消息队列追踪:

第一个是 Kafka 集成。 添加 Kafka 插桩依赖,配置 Producer 和 Consumer,Trace Context 在消息中传播。

第二个是 RabbitMQ 集成。 添加 RabbitMQ 插桩依赖,配置 Publisher 和 Consumer,Trace Context 在消息中传播。

第三个是消息追踪。 Kafka 消息属性、RabbitMQ 消息属性,Trace Context 传播。

消息队列追踪总结: 消息队列追踪包括 Kafka 集成(自动追踪 Kafka 消息)、RabbitMQ 集成(自动追踪 RabbitMQ 消息)、消息属性(自动添加消息属性)、Trace Context 传播(跨服务追踪)。这些功能组合在一起,构成了完整的消息队列追踪能力。

这就是自动插桩:消息队列追踪。掌握这些功能,可以追踪和分析消息队列通信。

在下一节,我们将学习手动插桩:自定义业务 Span。学习如何使用 @WithSpan 注解和 Tracer API。