9.3. 使用 tracer 检查 Kafka 客户端
检测 Kafka producer 和使用者客户端,以及用于分布式追踪的 Kafka Streams API 应用程序。
9.3.1. 提取制作者和消费者以进行追踪 复制链接链接已复制到粘贴板!
使用 Decorator 模式或 Interceptors 来检测您的 Java 制作者和消费者应用程序代码进行追踪。
流程
在每个制作者和消费者应用程序的应用程序代码中:
将 OpenTracing 的 Maven 依赖项添加到制作者或消费者的
pom.xml
文件。<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-kafka-client</artifactId> <version>0.1.15.redhat-00006</version> </dependency>
<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-kafka-client</artifactId> <version>0.1.15.redhat-00006</version> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Decorator 模式或 Interceptors 检测您的客户端应用程序代码。
使用 Decorator 模式:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Interceptors:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.1.1. 在 Decorator 模式中的自定义 span 名称 复制链接链接已复制到粘贴板!
span 是 Jaeger 中的逻辑工作单元,包括操作名称、开始时间和持续时间。
要使用 Decorator 模式检测您的制作者和消费者应用程序,请在创建 TracingKafkaProducer
和 TracingKafkaConsumer
对象时将 BiFunction
对象作为附加参数来定义自定义 span 名称。OpenTracing Apache Kafka Client Instrumentation 库包括几个内置范围名称。
示例:使用自定义 span 名称以 Decorator 模式检测客户端应用程序代码
9.3.1.2. 内置范围名称 复制链接链接已复制到粘贴板!
在定义自定义范围名称时,您可以在 ClientSpanNameProvider
类中使用以下 BiFunctions
。如果没有指定 spanNameProvider
,则使用 CONSUMER_OPERATION_NAME
和 PRODUCER_OPERATION_NAME
。
BiFunction | Description |
---|---|
|
返回 |
|
返回 |
|
以格式 |
|
返回 |
|
返回操作名称和主题名称:" |
|
返回 |
9.3.2. 用于追踪的 Kafka Streams 应用程序 复制链接链接已复制到粘贴板!
本节论述了如何使用 Kafka Streams API 应用程序进行分布式追踪。
流程
在每个 Kafka Streams API 应用程序中:
将
opentracing-kafka-streams
依赖项添加到 Kafka Streams API 应用程序的 pom.xml 文件中:<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-kafka-streams</artifactId> <version>0.1.15.redhat-00006</version> </dependency>
<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-kafka-streams</artifactId> <version>0.1.15.redhat-00006</version> </dependency>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
TracingKafkaClientSupplier
供应商接口实例:KafkaClientSupplier supplier = new TracingKafkaClientSupplier(tracer);
KafkaClientSupplier supplier = new TracingKafkaClientSupplier(tracer);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
KafkaStreams
提供供应商接口:KafkaStreams streams = new KafkaStreams(builder.build(), new StreamsConfig(config), supplier); streams.start();
KafkaStreams streams = new KafkaStreams(builder.build(), new StreamsConfig(config), supplier); streams.start();
Copy to Clipboard Copied! Toggle word wrap Toggle overflow