有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我目前正在尝试了解如何以可伸缩的方式定制Spring Cloud Sleuth,以便为每个跨度添加信息

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

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

我了解了新行李信息的概念——但我的理解是,它对整个跟踪来说是全局性的——由于跟踪有多个跨不同服务/机器的请求,它不符合我在服务/机器级别添加信息的目的

到目前为止,当我检查通过spring-cloud-stream-binder-kafka写入我的卡夫卡主题的JSON时,过滤器和拦截器的标记设置了一些跨度,但不是全部跨度

所以我的问题是:存在哪些类型的请求/操作来创建跨度,以及有哪些适当的方法来向这些跨度中注入内容。由于我想将这个实现部署到几个微服务上,所以我不想对每个方法都进行注释,也不想做类似的工作密集型方法,因此无法扩展


共 (1) 个答案

  1. # 1 楼答案

    有很多这样的地方。。。但实际上,我们可以从另一个角度来解决这个问题。只有一个地方你可以钩住——当跨度关闭时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 reporter之前,它将添加一个标记。更简单的方法是只注册SpanAdjusterbean,在报告之前调整跨度。这样,您只能在一个位置添加标记