微服务日志监控

与前端或移动端产品不同,微服务运行于后台,我们不能直观的观察到服务端的运行状况。因此,合理地记录日志是检查服务端运行状态,查找问题的有效手段。

服务端日志的常见用途有:

  • 业务日志:对一些分支条件进行简单记录,方便日后排查。
  • 异常记录:记录运行时异常或业务逻辑异常,方便事后排查。
  • 性能定位:日志系统一般自带时间戳,可以通过此方法排查函数调用的时间消耗。

对于微服务架构,记录下来日志只是第一步,如何使用日志是更大的难点。

试想在微服务的分布式系统下,有多种微服务,每个微服务又存在多个副本,日志文件可能散落在几百个不同的路径下。

这种情况下,面临着如下挑战:

  • 如何快速找到某个微服务的所有(或某个)副本的日志?
  • 微服务之间存在调用,如何从一次完整的调用角度,来分析相关服务的日志?
  • 如何对异常日志进行预警?

上述挑战实际对应了日志监控的三个问题,即

  • 微服务日志的收集、管理与查询
  • 微服务的调用链跟踪
  • 微服务异常日志的预警

本章将从微服务的日志系统展开讨论,探讨了使用Logback记录微服务日志的相关问题。

接着,我们讨论如何实现调用链的跟踪,并引入了TraceId类库。

最后,讨论如何使用”EBLK架构”对微服务的日志进行收集、管理、查询。