【问题标题】:Sending Zipkin Spans for @FeignClient为@FeignClient 发送 Zipkin Spans
【发布时间】:2021-06-03 08:19:18
【问题描述】:

我正在运行一个 Spring Boot 应用程序:

  • Spring Boot 2.3.8
  • Spring Cloud Hoxton.SR10

我已声明 spring-cloud-starter-zipkinspring-cloud-starter-openfeign 依赖项,并将我的应用程序配置为指向 Zipkin 服务器。它是一个非常普通的设置和配置(我还声明了 spring-cloud-starter-netflix-ribbonspring-cloud-starter-kubernetes-all 依赖项,允许 Spring Feign 使用 k8s 服务发现)。

我的应用声明了一个带有 @SpringFeign 注释的接口,其中包含一个调用远程服务的方法S

所以通常 zipkin 从我的应用程序中获取跨度(例如传入的 REST 调用),并且 B3 标头通过 HTTP 传播到通过 feign 调用的服务 S

但是 zipkin 没有报告我的应用程序代表 Feign 对 S 的调用的跨度。 那是应该“刚刚发生”的事情,还是我错过了一块拼图?

我可以例如将@NewSpan 添加到 feign 接口方法中,但这并没有给我作为 span 标签的请求/响应的 HTTP 详细信息。如果这应该开箱即用,我宁愿不这样做。

【问题讨论】:

    标签: spring-boot spring-cloud-feign spring-cloud-sleuth zipkin


    【解决方案1】:

    这应该是开箱即用的:https://docs.spring.io/spring-cloud-sleuth/docs/2.2.7.RELEASE/reference/html/#feign

    你可以看一下feign sample(需要回溯历史,目前是3.x):https://github.com/spring-cloud/spring-cloud-sleuth/tree/master/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign

    为了查看传播是否有效,请查看传出请求,它应该包含与跟踪相关的标头。

    【讨论】:

    • 感谢 Jonatan - 澄清一下,通过 HTTP 标头通过 feign 将 b3 信息传播到另一个应用程序工作正常;我感兴趣的是在调用 feign 客户端时将跨度从我的应用程序发送到 zipkin。
    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2023-02-06
    • 2018-12-05
    相关资源
    最近更新 更多