gpt4 book ai didi

java - 如何使用 Spring Cloud Sleuth 向每个跨度添加信息

转载 作者:行者123 更新时间:2023-12-04 14:25:44 27 4
gpt4 key购买 nike

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

到目前为止我尝试了什么:

使用我自己的 GenericFilterBean 实现和 HandlerInterceptorAdapter , 给他们一个 Tracer在构造函数中并在每次使用 tracer.addTag("key", "value") 调用它们时写入标签

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

到目前为止,当我检查通过 spring-cloud-stream-binder-kafka 写入我的 kafka 主题的 JSON 时,过滤器和拦截器的标签已为某些跨度设置,但不是为所有跨度设置。

所以我的问题是:确实存在哪些类型的请求/操作会创建跨度,以及将某些内容注入(inject)这些跨度的适当方法是什么。因为我想将此实现部署到多个微服务,所以我不想对每个方法进行注释或做类似的工作密集型操作,因此无法扩展方法。

最佳答案

这样的地方还有很多……其实,我们可以换个角度来解决这个问题。只有一个地方可以 Hook - 当 span 关闭时。 https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanReporter.java - 您可以创建自己的 SpanReporter 实现,在委托(delegate)给例如 Zipkin span reporter 之前将添加一个标签。更简单的方法是只注册 SpanAdjuster bean,它会在报告范围之前调整范围。这样你就可以只在一个地方添加标签。

关于java - 如何使用 Spring Cloud Sleuth 向每个跨度添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com