0

我有很多应用程序,每个应用程序都有自己的日志。我通常在分布式日志中有问题。

为了解决这个问题,我正在使用:

  • Brave / Spring Sleuth 生成跟踪和跨度 ID
  • Elastic/Logstash/Kibana 在我的日志中集中和搜索

通过这种方式,我能够按照它们写入的顺序(按它们的时间戳)查看所有应用程序日志。但事实是我不能相信日志中写的时间戳。所有服务器的时钟都不同步。

所以我需要一些可以帮助我对所有日志进行排序的东西。

我曾想过在每个跨度上生成一个数字:

app1 : sequenceId = {}
     app2 : sequenceId = {}
     app3 : sequenceId = {}
             app4 : sequenceId = {}
app5 : sequenceId = {}
     app6 : sequenceId = {}
     app7 : sequenceId = {}
             app8 : sequenceId = {}

预计会按以下顺序对日志进行排序:app1、app2、app3、app4、app5、app6、app7、app8

有人知道解决这个问题的技术吗?

4

1 回答 1

1

我们在 Sleuth ( https://github.com/spring-cloud/spring-cloud-sleuth/issues/275 ) 中有一个问题。最简单的事情是在日志中添加一个标签/条目,该标签/条目会随着每个子跨度而增加。您可以重用 Sleuth 的内部结构,即覆盖DefaultTracer's行为以在子跨度创建时添加附加标签。然后在Slf4jLogger您将重用该标记以在 MDC 上下文中设置附加元素

于 2017-12-18T10:22:03.043 回答