
176
|
第
6
章
度的加深,日志记录和指标检测也变得越来越具有挑战性,也愈发重要了。
6.8.1 使用统一的日志系统
使用一个统一的日志系统,该系统应能够获取所有服务中的日志消息,以及各个层级的
系统消息,然后将它们集中存储在一个地方。无论你是不是会为了数据分析和检索而
把所有日志都移动到另一个存储中,还是就把这些日志留在那里,然后分布式地查询日
志,最重要的是要确保当一个工程师需要去查询和分析日志的时候,不用在多个系统中
一个一个的去找。
6.8.2 使用关联 ID
一个请求在所有服务中传递的过程中应该有一个唯一的关联 ID(CID)。如果其中一项服
务失败了,这时候可以使用关联 ID 来追踪系统中的请求并确定故障发生的位置。
6.8.3 在日志记录中包含上下文
每条日志记录都应当包含额外的上下文信息,这将帮助你进行问题的分析。例如,在
日志中加入所有异常处理信息
、
重试次数
、
服务名称或 ID
、
镜像版本
、
代码包的版
本,等等。
6.8.4 统一的结构化日志格式
定义一个供所有组件使用的统一的结构化日志格式。这可以使你以后能够快速地查找和
解析日志记录。此外,确保所有的组件使用的是相同的时区信息。通常,最好是用一个
通用的时间格式,如 UTC 时间。
6.8.5 适当地标记指标
除了使用明确并且唯一的指标名称,确保你也在指标的标签中保存了其他一些信息,如
组件名
、
环境
、
函数名
、
地域,等等。有了这样的标签,你就可以从多个维度创建查
询
、
可视面板和各种报告了,例如某个地域的平均延迟,或者是某个函数在多个地域的
平均延迟。