当前位置: 首页 > 知识库问答 >
问题:

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

归鸿朗
2023-03-14

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

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

使用我自己的GenericFilterBean和HandlerInterceptorAdapter的实现,在构造函数中为它们提供一个跟踪程序,并在每次使用跟踪程序调用它们时写入标记。addTag(“键”,“值”)

我看了一下新行李信息的想法,但我的理解是,它对于整个跟踪来说是全局的,而且由于跟踪有多个跨不同服务/机器的请求,因此不符合我在服务/机器级别添加信息的目的。

到目前为止,Filter和Interceptor中的标签为某些Spans设置,但不是为所有Spans设置,当我检查通过spring-cloud d-stream-binder-kafka写入我的kafka主题的JSON时

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

共有1个答案

罗光华
2023-03-14

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

 类似资料:
  • 我在我的Spring启动应用程序中使用了开放遥测java自动检测。有没有办法让应用程序日志成为创建的跨度的一部分? 我的自动配置设置如下:

  • 问题内容: 我正在尝试使用绘制多个热图。我发现一个示例如下: 如果我注释以下两行,则代码成功(在上面的示例中完成): 如果使用这两行,则会收到错误消息: 我该如何纠正? 谢谢大家的帮助!!! 问题答案: 使用matplotlib面向对象的接口时,要使用的正确命令是和。 (对于状态机接口,将其与等比较)。 同样,要设置标题,您需要 您可以在api文档中(此处)查看实例的所有可用方法。

  • 问题内容: 我想为每个列名添加后缀,如下所示: 我该怎么做呢?另外,如果要添加后缀,解决方案将如何更改? 问题答案: 您可以使用一种理解: 也有内置方法,如和在另一个答案中提到的。

  • 我有一个使用. NET 6 Web API的应用程序。一旦用户登录到应用程序,关于该用户的基于小上下文的信息被附加到查询参数。 API中AuthPolicy的一部分是,当调用endpoint时,这些查询参数必须存在,即使该endpoint没有使用它们。 例如,此 终结点具有在请求正文中传递的实际输入,但 AuthPolicy 要求查询参数存在,即使未使用它也是如此。 有效EX: 无效的EX: 有没

  • 当使用spring Batch从db写入csv文件时,我需要在每个列的分隔符之前根据条件添加空格。 例如,我在csv文件中要求间隔

  • 问题内容: 如何使用iText在每个页面上添加总页数? 问题答案: 使用伪页面计数将输出从a 处理为第一个。 从中创建一个,调用以获取实际的页数。 重新创建PDF输出,知道页数是多少,并相应地更改页脚。 这很麻烦,但是如果没有两遍方法,就没有简单的方法来知道页数。有关处理PDF的详细信息,请参见示例代码。