我尝试使用Kafka将跟踪(而不是指标)添加到Sping Boot 应用程序中。我读了这个博士。我补充说
implementation("io.opentelemetry.instrumentation", "opentelemetry-kafka-clients-2.6", "+")
implementation("org.springframework.cloud" , "spring-cloud-starter-sleuth")
添加属性到我的poducer
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: com.github.thake.kafka.avro4k.serializer.KafkaAvro4kSerializer
client-id: "client-1"
properties:
interceptor:
classes: io.opentelemetry.instrumentation.kafkaclients.v2_6.TracingProducerInterceptor
但我没有看到任何标题的消息。经过3个小时的调试,我了解到,开放遥测拦截器不undersend,我需要B3传播从Spring云启动器侦探。现在我看到了NoopTextMapPropagator
,它没有添加任何头文件。我试着从文档中添加一些其他的依赖项
implementation("io.opentelemetry", "opentelemetry-sdk", "+")
implementation("io.opentelemetry", "opentelemetry-sdk-extension-autoconfigure", "+")
但这不是工作。我希望opentelemetry有一些自动配置B3传播器或一些指南how to
添加它。
1条答案
按热度按时间ryevplcw1#
首先,在使用任何OTel工具之前,您需要设置一个
OpenTelemetry
示例。你可以使用SDK autoconfigure模块完全手动完成,或者你可以使用javaagent并让它自动安装SDK和所有仪器(如果你使用代理,你不必自己安装任何Kafka仪器,代理会为你做这件事)。从你发布的例子来看,你在你的应用中包含了autoconfigure模块--你需要初始化它,这样它就可以构建一个
OpenTelemetry
示例。例如,您可以添加以下Bean:如果你想使用B3传播器,你可以将
otel.propagators
/OTEL_PROPAGATORS
系统属性/env var设置为b3
(另见链接);则自动配置模块将检测到这一点并使用所配置的传播器。最后,由于您希望检测Kafka客户端,因此我建议同时使用
kafka-clients-2.6
和spring-kafka-2.7
检测库。spring-kafka
仪器确实改进了消费者端遥测。下面是一个关于如何设置它的示例:https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/d7d629617aa942abfa689878ea8af85f2d8d507b/instrumentation/spring/spring-kafka-2.7/library/src/test/java/io/opentelemetry/instrumentation/spring/kafka/v2_7/SpringKafkaNoReceiveTelemetryTest.java#L38C1-L57