最佳实践:可观测建设实践之 - 日志分析的权衡取舍

本文结合稳定性保障实践,说明日志分析如何在成本、效果和落地风险之间取舍,并介绍用网关日志生成业务指标、与指标和链路追踪联动、再通过 Flashcat 串联多数据源的日志分析路径。

作者 快猫技术

指标、日志、链路是服务可观测性的三大支柱,在服务稳定性保障中,通常指标侧重于发现故障和问题,日志和链路分析侧重于定位和分析问题,其中日志实际上是串联这三大维度的一个良好桥梁。

但日志分析往往面临成本和效果之间的权衡问题,没有完美的方案只有适合的方案,本文将结合实战经验,介绍一种日志分析的实现,分析如何在稳定性保障中用好日志这个维度,以及日志如何与指标、链路相互配合形成故障定位的最佳实践。

核心要点

  • 日志分析的关键不是“把所有日志都做复杂计算”,而是在成本可控的前提下,把最有价值的日志转成可观测信号。
  • 网关日志通常格式更统一、离用户更近,适合提取流量、成功率、延迟等全局服务指标。
  • 程序模块日志的价值更多在原文证据和异常细节,不一定适合全部做高成本分析计算。
  • 好的日志分析路径应该能从指标异常下钻到日志原文,再从日志里的 traceid 或模块信息关联到链路追踪。

日志分析方案概览

环节 输入 输出 价值
日志到指标 网关日志 流量、成功率、延迟等维度指标 构建全局服务大盘和业务健康视图
指标到日志 指标异常时间窗口 对应日志原文 快速确认异常请求特征
日志到链路 traceid、接口、模块信息 请求调用链路 定位异常发生在哪个下游或模块
链路到日志 trace 异常点 模块详细日志 复核底层错误和上下文
日志到特征 网关日志维度 IP、实例、upstream 等聚集特征 支持止损和进一步追查

日志分析难点

日志分析在企业落地时,通常会遇到三个问题:

  1. 规范问题:服务模块的语言和框架各异,日志格式不规范,分析困难。
  2. 管理问题:微服务模块众多,日志收集、权限、保留周期和查询入口都需要统一管理。
  3. 成本问题:日志保存和计算分析会消耗大量存储与计算资源,使用成本高。

日志分析方案

本文推荐一种在稳定性保障中,经过考量和实战的日志分析方案。故障处理场景中日志分析的核心思路:

  • 日志到指标:基于网关日志分析接口、域名、渠道、端等维度的关键指标,包括流量、成功率和延迟。
  • 指标到大盘:把网关日志计算出的维度指标用于全局服务大盘或大屏建设,用来观察服务整体状态。
  • 指标到日志:这类指标来源于日志计算,天然可以关联到对应时间窗口的日志原文。发现指标趋势异常时,可以快速调出相关日志。
  • 日志到链路:日志原文中如果带有 traceid、模块或接口信息,就可以打通 trace 系统,调出具体请求或模块的调用链路。
  • 链路到日志:在 trace 的异常点继续下钻日志系统,调出对应模块和接口的详细日志,做进一步异常判断。
  • 日志到特征:基于网关日志做异常指标的特征分析。例如下单接口异常时,分析异常请求在来源 IP、接入层实例、upstream 等维度上是否有聚集特征或特征变化,从而支持止损或进一步追查。

问题追查典型路径

优点和权衡

这个方案的优点和权衡点在于:

  • 分析性价比高:网关日志通常较为规范,如 Nginx 日志,并且也容易治理。同时网关日志最靠近用户端,从分析价值和治理难度看,通常是优先选择。
  • 治理性价比高:程序模块日志由于语言和框架各异,治理难度高,分析价值也容易打折扣。治理重点可以转移到 trace 系统落地上。程序模块使用 trace SDK 或 agent 后,可以输出规范 trace 信息和有价值的定位信息。落地 trace 也有成本,但对类似 Java 这类语言,可以使用 javaagent 方案做到无侵入实现。
  • 扬长避短:程序模块日志原文格式可能各异,但异常日志仍然是判断问题原因的重要依据。因此不一定要把所有程序日志都做分析计算,只需要在合适的分析步骤中查询调出。

该方案以日志为中心,实现了一条日志、指标、trace相互串联的问题发现和分析路径,这条路径也是故障问题分析的典型路径。

同时从方案的落地和推动成本上来讲也是一个比较合适的取舍。如果可观测产品支持好这条路径信息的串联,会大幅提升异常问题定位分析的效率。

方案落地要点

混合云资源、观测系统众多,是目前很典型的企业基础设施现状,在此基础上要实现这个方案可能需要重点解决以下几个问题:

  1. 存量系统如何打通:指标、日志、trace 都可能已经有各自独立的系统,需要串联融合不同系统的数据。
  2. 云上云下如何打通:很多企业使用私有化和公有云的混合云方案,日志可能同时存在私有化 ELK 和云上日志系统中,如阿里云 SLS 和腾讯云 CLS。
  3. 风险成本如何控制:如果全部推倒重建,用一套系统替代原有系统,风险和成本都太高,周期也不可控。

产品实践

这里介绍快猫星云的 Flashcat 是如何解决这些问题的。

  • 数据源抽象:常见的开源和云上现有可观测系统都可以作为数据源注册到 Flashcat。
  • 数据交互:Flashcat 底层通过 API 和各数据源交互。
  • 统一分析:上层对来自各个数据源的数据,特别是日志数据,做统一灵活的配置和分析,生成各类自定义维度报表和指标数据。
  • 指标建设:日志生成的指标数据可以配置到北极星、灭火图,作为业务健康状态和系统健康状态的观测指标。
  • 下钻关联:从 Flashcat 的北极星和灭火图可以下钻到上面描述的问题分析路径,实现从业务异常发现、系统异常范围收敛,到具体问题分析确认的全链路串联。

Flashcat 统一日志分析平台


Flashcat 问题下钻分析路径

总结

本文介绍了稳定性保障中日志分析系统建设面临的问题、挑战、需求和建设中的权衡取舍。并介绍了 Flashcat 如何解决这些问题,做到效果和成本最佳,也最具落地的可行性。

FAQ

Q1:为什么优先分析网关日志,而不是所有应用日志?

A:网关日志通常格式更统一、位置更靠近用户端,能直接反映接口、域名、渠道、端等维度的流量、成功率和延迟。应用日志价值也很高,但更适合作为异常细节和原文证据使用。

Q2:日志分析和链路追踪是什么关系?

A:日志可以提供异常上下文,链路追踪可以提供请求调用路径。日志中带有 traceid 或模块信息时,就能从日志跳到 trace,再从 trace 异常点回到具体模块日志。

Q3:为什么不建议直接替换所有存量系统?

A:企业常常已经有指标、日志和 trace 的多个存量系统。直接替换风险高、周期长、成本不可控。更稳妥的方式是先做数据源抽象和上层统一分析,再逐步治理底层系统。

联系我们交流

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 Log
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云