我目前正在尝试了解如何以可扩展的方式自定义Spring Cloud Sleuth以向每个Span添加信息。
到目前为止我尝试过:
使用我自己的GenericFilterBean
和HandlerInterceptorAdapter
实现,在构造函数中为它们指定Tracer
,并在每次使用tracer.addTag("key", "value")
我看了一下新行李信息的概念 - 但是我以一种全局跟踪的方式解释它 - 并且由于跟踪在不同的服务/机器上有多个请求,它不符合我的目的添加服务/机器级别的信息。
到目前为止,当我通过spring-cloud-stream-binder-kafka
所以我的问题是:确实存在哪些类型的请求/操作可以创建跨度,以及将某些内容注入这些跨度的适当方法。由于我想将此实现部署到多个微服务,因此我不想对每个方法进行注释,也不需要进行类似的工作密集,因此不能进行可扩展的方法。
答案 0 :(得分:2)
有很多这样的地方......但实际上,我们可以从另一个角度解决问题。有一个地方可以挂钩 - 当跨度关闭时。 https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanReporter.java - 您可以创建自己的SpanReporter
实现,然后在委托Zipkin span报告者添加标记之前。更简单的方法是在报告之前注册调整跨度的SpanAdjuster
bean。这样,您只能在一个地方添加标签。