如何使用sleuth的父范围ID追溯日志?

问题描述

问题: 我的应用程序有多个通过Spring Kafka进行通信的微服务,并且还有周期。例如:Service1-> Service2-> Service1-> Service2-> ........

我正在使用Spring Sleuth,它在请求中添加了跟踪ID,范围ID和父范围ID。但是我无法使用父跨度ID来从日志中追溯,因为当请求接收到但没有日志时,侦探会创建新的跨度。

Message flow graph

在上面的示例中,B将消息发布到C以及F(2个分支),因此两者都收到相同的跟踪ID。现在,如果H中出现错误,并且我想追溯到分支H-> G-> F-> B-> A,我该如何实现?由于C,D和E都具有相同的跟踪ID,因此在日志中,我不能仅按跟踪ID进行过滤。 我一直在寻找一种使用父跨度ID进行追溯的方法,但似乎不可能。

我尝试过的另一种解决方案:使用侦探的行李字段并将其设置在MDC中,以便它们出现在日志中。 创建一个行李字段(例如“ my-parent-id”)以跟踪实际的父母跨度ID。在发布消息之前对其进行更新 例如:在将消息从B发布到F之前,我可以将该行李字段更新为B的跨度ID。这样,我可以使用“ my-parent-id”字段进行追溯。

问题:我找不到有关如何添加行李字段并进行传播的任何示例/文档。我发现的示例似乎已被弃用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)