带有 OpenTracing 的 Spring Cloud Sleuth

Posted

技术标签:

【中文标题】带有 OpenTracing 的 Spring Cloud Sleuth【英文标题】:Spring Cloud Sleuth with OpenTracing 【发布时间】:2017-10-25 06:41:25 【问题描述】:

有没有办法将 Spring Cloud Sleuth 与 OpenTracing 一起使用?我想用 Jaeger 连接 Spring 客户端

【问题讨论】:

您可以尝试在gitter.im/spring-cloud/spring-cloud询问 此外,Jaeger 现在有一个 HTTP 端点,可以接收 Zipkin Thrift 格式的 span。但是由于 Sleuth 不支持 OpenTracing,因此您实际上无法将 Jaeger Java 客户端与它一起使用,因此会缺少它提供的许多功能,例如自适应采样。 @Javier 你有解决这个问题的办法吗? 不是,但现在我只是改变策略,使用 Spring 内置的。 【参考方案1】:

Spring Sleuth 现在兼容 OpenTracing。您所要做的就是在您的类路径中使用 OpenTracing Jars。

然后您可以使用 Sleuth-Zipkin 将检测数据发送到 Jaeger 的 Zipkin 收集器。

这样你就可以用最少的配置实现你想要的一切。

您可以在这里使用我的示例程序作为示例:

https://github.com/anoophp777/spring-webflux-jaegar-log4j2

【讨论】:

【参考方案2】:

这里正在进行讨论 - https://github.com/spring-cloud/spring-cloud-sleuth/issues/599。一般来说,我们不明确使用 OpenTracing API,但在标头传播方面我们与 Zipkin 兼容。您还可以根据需要操作标头名称,因此如果您使用的任何类型的库需要跨度/跟踪等其他标头名称,那么您可以根据需要自行设置。

【讨论】:

以上是关于带有 OpenTracing 的 Spring Cloud Sleuth的主要内容,如果未能解决你的问题,请参考以下文章

如何在 opentracing 中更改 trace-id 标头?

Jaeger-Opentracing的Java-client

Golang微服务:Micro Trace使用opentracing jaeger

Dubbo3高级特性「框架与服务」RPC全链路调用追踪参数传递(OpenTracing)

OpenTracing语义标准规范及实现

OpenTracing语义标准规范及实现