1

我正在努力为 Spring Boot 2.0.2 应用程序设置 OpenTracing/Jaeger。从 Spring Boot 1.5.3 的一个工作但非常示例开始,我转到 Spring Boot 2.0.2——它正确地发送了跟踪。但是那里使用的依赖项非常陈旧(例如 opentracing-spring-web-autoconfigure 的 0.0.4,现在在 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 implementation(使用过时的 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_

4

1 回答 1

2

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

使用

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

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

这解决了我的问题。

于 2018-11-29T11:19:37.877 回答