3

我目前正在尝试了解如何以可扩展的方式自定义 Spring Cloud Sleuth 以向每个 Span 添加信息。

到目前为止我已经尝试过:

使用我自己的GenericFilterBeanand实现HandlerInterceptorAdapter,在构造函数中给它们 aTracer并在每次调用它们时编写标签tracer.addTag("key", "value")

我查看了新行李信息的想法——但是我以一种对整个跟踪来说是全局的方式来解释它——并且由于跟踪在不同的服务/机器上有多个请求,它不符合我添加信息的目的在服务/机器级别。

到目前为止,当我检查写入我的 kafka 主题的 JSON 通过spring-cloud-stream-binder-kafka

所以我的问题是:确实存在哪些类型的请求/动作来创建跨度,以及将某些东西注入这些跨度的适当方法是什么。由于我想将此实现部署到几个微服务,我不想注释每个方法或做类似的工作密集型,因此不可扩展的方法。

4

1 回答 1

3

这样的地方很多……但实际上,我们可以从另一个角度来解决这个问题。有一个地方可以挂上 - 当跨度关闭时。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。这样,您只能在一个地方添加标签。

于 2017-07-11T10:30:14.983 回答