Spring Boot 跟踪OpenTelemetry + String Boot + Kafka

utugiqy6  于 2023-05-17  发布在  Spring
关注(0)|答案(1)|浏览(307)

我尝试使用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添加它。

ryevplcw

ryevplcw1#

首先,在使用任何OTel工具之前,您需要设置一个OpenTelemetry示例。你可以使用SDK autoconfigure模块完全手动完成,或者你可以使用javaagent并让它自动安装SDK和所有仪器(如果你使用代理,你不必自己安装任何Kafka仪器,代理会为你做这件事)。
从你发布的例子来看,你在你的应用中包含了autoconfigure模块--你需要初始化它,这样它就可以构建一个OpenTelemetry示例。例如,您可以添加以下Bean:

@Bean
OpenTelemetry openTelemetry() {
  return AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
}

如果你想使用B3传播器,你可以将otel.propagators/OTEL_PROPAGATORS系统属性/env var设置为b3(另见链接);则自动配置模块将检测到这一点并使用所配置的传播器。
最后,由于您希望检测Kafka客户端,因此我建议同时使用kafka-clients-2.6spring-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

相关问题