问题描述
一点背景:
我们有大约 10 个 Spring Boot 微服务,它们通过 kafka 相互通信。每个微服务的日志都会发送到 Kibana,如果有任何错误,我们必须通过 Kibana 日志进行筛选。
好处是:在任何流开始时,我们的一个微服务都会生成一个消息 ID,并将其作为消息传输的一部分传播给所有其他微服务(通过 kafka 发生),因此我们可以在日志中搜索消息 ID,我们可以看到该流在我们所有微服务中的足迹。
不好的部分:必须对大量日志进行筛选,才能基本了解故障的位置和原因。
现在的问题:
所以我想知道我们是否可以实现一些分布式跟踪,也许通过 Zipkin(或其他一些开放式跟踪框架)可以使用我们生态系统已经产生的消息 ID,而不是生成一个新的消息 ID?
感谢您的时间:)
解决方法
我不完全确定这是否是您的意思,但是您可以使用 Jeager https://www.jaegertracing.io/ 来检查调用元数据中是否已存在跟踪 ID,并在其中生成子跟踪 ID。基于所有跟踪 ID 生成调用图