42 分析日志真的没那么简单
你好,我是周志明。
在上节课明确了可观测性的概念、特征与现状之后,我们知道了可观测性一般会被分成三种具体的表现形式,分别是日志、追踪和度量。那么这节课,我们就来讨论其中最普遍的形式:事件日志。
日志主要是用来记录系统运行期间发生过的离散事件。我想应该没有哪一个生产系统会缺少日志功能,不过我也相信,没有多少人会把日志看作是多关键的功能。它就像是阳光与空气,不可或缺但又不太被人重视。
除此之外,我想在座的很多人也都会说日志很简单,其实这是在说“打印日志”这个操作简单。打印日志的目的是为了日后能从中得到有价值的信息,而今天只要是稍微复杂点的系统,尤其是复杂的分布式系统,就很难只依靠tail、grep、awk来从日志中挖掘信息了,往往还要有专门的全局查询和可视化功能。
此时,从打印日志到分析查询之间,还隔着收集、缓冲、聚合、加工、索引、存储等若干个步骤,如下图所示:

日志处理过程
而这一整个链条中,会涉及到大量需要我们注意的细节,其复杂性并不亚于任何一项技术或业务功能的实现。所以接下来,我就以这个日志的处理过程为主线,以最成熟的Elastic Stack技术栈为例子,给你介绍该链条每个步骤的目的与方法。
好,下面我们就先来了解下日志处理中的输出工作。