使用 Spring Boot 2.0.2 的 OpenTracing 不会在 Jaeger 中产生任何痕迹

OpenTracing with Spring Boot 2.0.2 does not yield any traces in Jaeger

我正在努力为 Spring Boot 2.0.2 应用程序设置 OpenTracing/Jaeger。从 Spring Boot 1.5.3 的工作但非常示例开始,我转到 Spring Boot 2.0.2 - 正确发送了跟踪。但是那里使用的依赖项太旧了(比如 0.0.4 for opentracing-spring-web-autoconfigure,现在在 0.3.2 中可用)。

所以我将应用程序迁移到最新的依赖项,导致 Jaeger 中不再出现任何痕迹。

我已将测试上传到 https://gitlab.com/ceedee_/opentracing-spring-boot。分支机构如下:

  1. master -> Spring 1.5.3 实现(工作)
  2. spring-boot-2-0-2-RELEASE -> Spring 2.0.2 实现(使用过时的 deps)
  3. spring-boot-2-0-2-RELEASE-latest-deps -> Spring 2.0.2 实现(不工作!)

2.与3.的区别如下:

  1. 已更新 pom.xml 以获取更新的依赖项。
  2. jaegerTracer bean 使用构建器(不再配置 Const-Sampler,应该是默认的)
  3. application.properties 激活 Const-Sampler(注释掉,因为它不会改进任何东西)

有没有人知道我为了正确地将跟踪放入 Jaeger 而做错了什么?也感谢有关调试的提示 OpenTracing/Jaeger!

此致, cd_

问题是 Report 实例使用了 NoopSender -- 因此忽略了连接设置。

正在使用

    <dependency>
        <groupId>io.jaegertracing</groupId>
        <artifactId>jaeger-thrift</artifactId>
        <version>0.32.0</version>
    </dependency>

在您的 POM 中,将为 Jaeger 的 SenderResolver::resolve 方法使用的 SenderFactory 提供适当的 Sender。

这解决了我的问题。