09.6、自动插桩 消息队列追踪
自动插桩:消息队列追踪
欢迎回到第 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。