单位 3 / 11

日志分析和根本原因分析:在噪音中寻找信号

收益:

  • 利用人工智能对日志进行汇总、分组和时间轴,快速找到噪音中的信号
  • 能够分离相关性和因果关系,并将人工智能的根本原因建议视为需要验证的假设
  • 能够通过人工智能运行“5 Why”方法并用真实证据支持每个步骤来找到真正的根本原因

日志分析和根本原因分析:利用人工智能在噪声中寻找信号

当系统崩溃时,您首先查看的是日志。日志是一种文本流,它保存系统或应用程序“我做了什么、发生了什么、出了什么问题”的带时间戳的记录。但现代基础设施每小时会产生数百万行日志;它不是信息的海洋,而往往是噪音的海洋。日志分析是在噪声中寻找重要信号(错误、异常、模式)的艺术。事件发生后回答“真正原因是什么”问题的过程称为根本原因分析(RCA - 根本原因分析)。在这里,人工智能在每秒总结数千行、提取模式、建立时间表和列出可能的原因方面非常强大。但请注意:人工智能会产生可能的原因;您是在系统中验证哪一个是真实的并做出决定的人。

在本单元中,您将学习如何自信地使用 AI 总结日志、如何建立事件的时间线、如何区分相关性(一起变化)和因果关系(一个导致另一个),以及如何使用 AI 运行 RCA 方法,例如“5 个为什么”。

为什么相关性不是因果性?

这是本单元最关键的概念。仅仅因为两个事件同时发生,一个事件不会导致另一个事件。服务器的CPU和网络流量可能同时增加;但其中一个不是另一个的结果,两者都可以是第三个事件的结果(例如,批处理作业的开始)。当人工智能看到指标一起变化时,它会假设“可能是 X 导致了 Y”。这是一个起点,而不是结论。要验证因果关系,您需要隔离变量(在测试环境中触发 X 并查看 Y 是否发生)或证明机制(显示 X 产生 Y 的技术手段)。

注意:将人工智能的句子“这可能导致这个”作为假设,而不是发现。在 RCA 中,不正确的根本原因会导致错误的纠正和事件的重复发生。你找到了第一个嫌疑人,却没有找到原因;工作从这里开始。

一步一步:使用 AI 进行日志分析

  1. 缩小范围。给出事件窗口,而不是整个日志:“事件于 14:05 开始,关键时间为 14:00–14:20”。告诉AI相关的时段和服务。
  2. 面具。日志包含内部 IP、主机名、用户和令牌。屏蔽它们(10.x.x.x、host-A、user1、REDACTED),然后导出。
  3. 请求摘要和分组。 “按严重性对该日志进行分组,计算重复出现的错误,找到第一个错误的时间戳。”询问结构,而不是原始日志。
  4. 设定一个时间表。 “按时间顺序排列这些事件并显示接下来发生的事情。”找到第一张多米诺骨牌是找到根本原因的途径。
  5. 寻求假设,而不是证据。 “按概率顺序列出可能的根本原因,并为我提供一个在系统上运行每个原因的验证命令。”询问诊断,而不是结果。
  6. 在系统中验证。使用只读诊断命令(log grep、状态查询、指标)测试每个假设。消除直至只有一个已确认的根本原因。

5 为什么方法

RCA 经典而强大的工具是“5 个为什么”:从一种症状开始,问“为什么?”五次。通过询问,您可以找到表面症状之下的根本原因。示例:“站点崩溃​​了。为什么?应用程序因内存不足而死亡。为什么?查询消耗了所有内存。为什么?查询没有使用索引。为什么?索引在上一个版本中被删除。为什么?在变更审核中没有注意到这一点。”根本原因不是表面的“网站崩溃”而是“变更审核流程薄弱”。人工智能将是构建这条链的好伙伴——但你必须用真实的证据来支持每个“为什么”步骤,否则人工智能可能会想出一条看似合理但错误的链条。

三个迷你箱子

案例 1 — 40,000 行,3 分钟。在一次夜间停机期间,管理员开始手动扫描 40,000 行应用程序日志。他将屏蔽日志的相关20分钟部分交给AI,并要求进行汇总和分组。 AI 在 02:14 标记了第一个 OutOfMemory bug,就在超时 bug 增加之后。工程师3分钟内收到考勤表;在自己的公制面板上确认了最初的诊断。

案例 2 — 从错误的根本原因中返回。一个团队认为人工智能的第一个假设(“日志填满了磁盘”)是正确的,并清除了日志。但第二天,这一事件又重演了。在第二轮中,他们严格执行了“5 个为什么”:真正的原因是应用程序错误每秒写入数百个核心转储。第一个假设是相关性;真正的原因是不同的。未经核实而接受仅提供了一天的缓刑。

案例 3 — 时间线找到了罪魁祸首。在间歇性网络中断期间,有数十台设备的日志。工程师将屏蔽日志交给人工智能,并让它创建统一的时间线。该图表显示,每次中断在冗余交换机运行状况检查消息发出后 30 秒恰好开始。这种相关性是一个强有力的线索。该团队验证了设备上密钥的固件错误并更换了它。

四个可复制模板

1)日志汇总及分组:

以下是[service] 14:00-14:20 的屏蔽日志。告诉我:(1) 按严重性 (ERROR/WARN/INFO) 对行进行分组和计数,(2) 列出前 5 个重复出现的错误模式,(3) 找到第一个错误的时间戳。不要重写原始日志,只需给出结构化摘要。添加一个虚构的行。日志:[屏蔽日志]

2)设定时间表:

我们将以下屏蔽事件记录排列到单个时间线中(时间戳+源+事件)。显示后续内容并标记似乎是第一个触发因素的事件。请注意,这是一个假设,因果关系需要验证。录音:[屏蔽录音]

3) RCA 合作伙伴的 5 个理由:

您的角色:RCA 协调员。症状:[症状]。跟我一起做“5 个为什么”:一个“为什么?”在每一步。问吧,我会用我现有的证据来回答,你问下一个问题。如果我的证据薄弱,请警告我并告诉我需要收集哪些数据。不要在没有证据的情况下宣布根本原因。

4)假设+验证命令:

按概率顺序列出此症状 [症状] 的可能根本原因。对于每个原因:(a)您怀疑什么,(b)给我一个在我的系统上运行的只读验证命令(无删除/更改)。解释哪个结果证实或反驳了假设。

弱提示/强提示

弱提示:

这个日志有什么问题吗? [10,000行原始日志]

这既会泄露敏感数据,又会让人工智能失去上下文。人工智能可能会偶然发现一条随机线,并给出一个肤浅的甚至是编造的理由。

强力提示:

您的角色:高级 SRE。事件:支付服务在 02:10-02:25 之间出现 50% 的错误。下面是该窗口的屏蔽日志。给我 (1) 按严重性分组的摘要,(2) 第一个错误的时间戳,(3) 按概率顺序排列的可能根本原因,以及每个错误的只读验证命令。将因果关系主张标记为假设。日志:[屏蔽日志]

步骤

目的

人工智能的作用

男人的角色

摘要/分组

减少噪音

配置数千行

确定范围和掩码

时间线

找到第一张多米诺骨牌

排序事件

验证邮票

假设生成

对嫌疑人进行分类

列出可能性

按上下文过滤

验证

找到真正的原因

建议诊断命令

运行命令并注释掉

决定

选择修复

提供选项

做出决定并确认

常见错误

  • 将相关性误认为因果关系。接受两个一起变化的指标“一个导致另一个”会产生错误的纠正。
  • 粘贴原始日志而不使用蒙版。将包含 IP、令牌和用户的日志提供给开放工具是一种安全违规。
  • 宣布第一个假设为根本原因。在没有验证的情况下接受人工智能的第一个建议是重复该事件的邀请。
  • 导出整个日志。没有上下文的巨大日志将AI插入随机行;折叠到事件窗口。
  • 5个没有证据的理由。如果你不使用真实数据来支持每个“为什么”步骤,你最终会得到一个看似合理但虚构的链条。
提示:在结束 RCA 之前,询问“如果这个根本原因确实得到解决,它不会再次发生吗?”问问题。如果答案是“也许”,那么你还没有找到根本原因;问另一个“为什么”。

总之

对数分析就是在一片噪音中寻找信号;人工智能可以在几秒钟内总结和构建这个海洋,建立时间表并生成假设。但相关性并不是因果关系:人工智能提出的原因只是最初的怀疑,而不是在得到确认之前的发现。将日志折叠到事件窗口中,对其进行屏蔽,询问结构,深入挖掘“5 个为什么”,并使用只读命令在系统上测试每个假设。您是找到根本原因并确认解决方案的人;人工智能是你的伴侣。

应用任务

获取过去事件(或测试事件)的日志,将其折叠到事件窗口中,并屏蔽所有敏感区域。使用上面的“日志摘要”和“时间线”模板向 AI 请求摘要和时间表。然后使用“RCA 合作伙伴的 5 个原因”模板从症状转向根本原因;为每一步写下你自己的证据。最后,用验证命令测试人工智能的初始假设,并记录它是否得到证实或反驳。将整个过程概括为 6 条。

清单

  • [ ] 我是否将日志折叠到事件窗口中并屏蔽了敏感区域?
  • [ ] 我是否向 AI 询问了结构化摘要和时间表,而不是原始日志?
  • [ ] 我是否将人工智能的因果关系主张标记为假设?
  • [ ] 我是否使用只读验证命令在系统上测试了每个假设?
  • [ ] 我是否用真实证据支持“5 个为什么”的每一步?
  • [ ] 我是否质疑并做出决定,根本原因是否会真正阻止该事件发生?