单位 7 / 12

日志分析和可观测性

收益:

  • 能够通过将大型日志转储屏蔽和过滤到 AI 来总结大型日志转储并创建时间线
  • 能够将人工智能建立的时间关系评估为假设,而不是因果关系
  • 能够使用指标和代码验证根本原因假设并准备事后草图

当软件在生产(实时环境)中运行时,只有跟踪、指标和日志(应用程序运行时生成的带时间戳的日志行)才能告诉您它正在做什么。在中断期间从数千甚至数百万条日志行中提取有意义的信号是事件响应中压力最大且时间紧迫的时刻。在这里,人工智能可以成为一个帮手,总结大量文本、提取模式并生成假设——只要你尊重隐私和验证限制。

在本单元中,我们学习在可观察性的背景下使用人工智能——通过查看系统的外部输出来理解系统内部状态的能力:从日志噪音中提取含义、建立错误的时间线、查找重复模式以及起草事后分析。预先发出重要警告:原始生产日志通常包含个人数据和秘密;随意将它们插入人工智能工具是一种严重的违规行为。

为什么日志很难,为什么人工智能有帮助?

日志之所以困难,有三个原因:体积(太多)、噪音(许多行不相关)和混乱(一个事件分散在不同服务的日志中)。人眼在这一堆中会感到疲劳并错过重要的线条。

人工智能擅长总结大块文本,计算重复模式,并询问“在错误爆发之前发生了什么变化?”它在建立时间关系方面非常强大,例如,但是,有两个限制。第一个是上下文窗口:模型中可以容纳的日志量是有限的,因此您需要首先进行过滤和采样。其次,验证:人工智能说“这就是根本原因”是一个假设;在没有通过指标和代码确认之前不要做出决定。

注意:原始生产日志可能包含 IP 地址、电子邮件、令牌、会话 ID,有时还包含公开秘密。在将它们输入人工智能之前对其进行屏蔽,或者仅使用企业批准的、数据安全的工具。我们将在第 10 单元中深化这个主题。

一步一步:从日志到根本原因

  1. 缩小时间窗口。确定活动开始的分钟数;检查那个窗口,而不是一整天。
  2. 过滤掉噪音。清除已知的重复、无害的行;重点关注错误(ERROR)、警告(WARN)和第一个偏差时刻。
  3. 屏蔽敏感数据。在将个人数据和秘密交给人工智能之前先对其进行清理。
  4. 创建摘要和时间表。要求人工智能按时间顺序总结事件(“先是这个,然后是那个”)。
  5. 使用指标和代码验证假设。 AI指出的原因;使用仪表板、相关代码和部署时间表进行确认(如果适用)。
  6. 把学到的东西写下来。制作事后草图并列出预防措施。

三个迷你箱

案例 1 — 在 5 分钟内总结 40,000 行。支付服务报告间歇性错误 12 分钟。该团队将相关的 20 分钟屏蔽日志窗口(大约 40,000 行,采样)提供给 AI 并生成时间线。该模型显示,错误突发与依赖服务的响应时间从 200 毫秒增加到 8 秒的时刻一致。该团队在仪表板上确认了这一点,并在 10 分钟内缩小了原因范围。

案例 2 — 误导性相关性。在另一起事件中,人工智能指责它,称错误是与 cron(计划任务)运行“同时”发生的。当团队检查指标时,他们发现 cron 实际上在事件发生之前就已经完成了;这种相关性纯属巧合。真正的原因是内存泄漏。教训:AI建立的时间关联是线索,而不是证据。

案例 3 — 加速尸检。中断后,团队将(屏蔽的)消息记录和时间线从事件通道提供给人工智能,并让它生成事后草图:摘要、影响、时间线、根本原因、行动。人类编辑纠正了事实并指定了行动负责人。原本需要2个小时的文档,大约用了40分钟就完成了,结构更加一致。

四个可复制模板

日志摘要和时间线(带有屏蔽日志):

下面是屏蔽生产日志的事件窗口。1) 将事件倒入时间轴中(标记第一次偏差的时刻)。2) 对最频繁出现的错误/警告类型进行计数和分组。3) “之前发生了什么变化?”列出问题的候选事件。这些都是假设;将其标记为“必须验证”。 {{日志}}

错误模式提取:

在这些日志行中查找重复出现的错误模式。对于每个模式:样本行(屏蔽)、估计来源和可能的含义。在单独的“注意”列表中收集罕见但严重的单一错误。{{logs}}

结构化查询/过滤器生成:

对于 {{log tool: grep/jq/Kibana KQL/CloudWatch Insights}},编写满足以下条件的查询:{{e.g.过去 15 分钟内有 5xx 个错误,不包括用户 X}}。解释查询;确保您没有编造域名,如果不确定,请询问。

尸检草图:

根据以下(屏蔽的)事件时间线编写事后分析草图:摘要/影响(持续时间、受影响的用户)/时间线/根本原因/进展顺利/操作(将每个事件的所有者字段留空)。不要使用指责性语言;实事求是、积极主动。{{timeline}}

弱提示/强提示

弱者:“看看这些日志,有什么问题吗?” (一整天的原始日志,带有个人数据,无针对性。)
Strong:“下面是14:02-14:20的屏蔽生产日志(过滤到5xxs)。在这个窗口中,找到错误爆发开始的时刻,统计最常见的错误类型,并列出爆发前60秒内出现的偏差;将它们全部标记为‘待验证的假设’。”

强大版本;它缩小时间窗口,过滤和屏蔽日志,提出明确的问题,并从一开始就确定输出是假设。

任务

人工智能很强

限制/验证

大日志总结

是的,快

可能存在采样损失

建立时间关系

生成提示

相关性≠因果关系

查询/过滤器生成

好草稿

域名是真实的吗?

尸检草图

结构和语言

病例均为人类确诊

相关性不是因果关系

日志分析中最常见的陷阱是“它同时发生,所以这就是原因”的谬误。人工智能与人类一样容易陷入这个陷阱,甚至更容易。因为它认为文本中的同时性是一个强烈的信号。能够说一个事件实际上导致了另一件事;需要时间、机制,如果可能的话,还需要可重复性。对于人工智能建立的每一个因果关系主张,我们都会问“还有什么其他证据证实了这一点?”用问题来测试一下。

提示:当登录到人工智能时,如果可能的话,首先打印查询/过滤器并在您的车辆中运行它,而不是文本转储;这样,您既可以减少敏感数据,又可以将模型的上下文窗口分成真正重要的行。

常见错误

  • 粘贴原始的、未屏蔽的日志。泄露个人数据和秘密;严重侵犯隐私。
  • 一次奉献一整天。它超出了上下文窗口,信号被噪声淹没。
  • 将相关性误认为因果关系。 AI建立的时间关系是线索,而不是证据。
  • 依赖于虚构域名的查询。模型可能会建议一个不存在的日志字段名称;与原理图验证。
  • 未经验证就发布事后分析。事实和影响数据必须经过人工确认。

综上所述

人工智能是一个强大的工具,可以消除日志分析中的大量信息和噪音:总结大量记录、建立时间表、提取模式以及准备事后草图。但请记住三个限制:不要在未屏蔽敏感数据的情况下导出敏感数据,对其进行过滤和采样以适合上下文窗口,并使用指标和代码验证每个因果关系声明。相关性不是因果关系; AI给出线索,你有证据做决定。

应用任务

从您拥有的事件或测试环境日志中选择 15-20 分钟的窗口。首先掩盖个人数据和秘密(或生成合成日志)。然后使用“日志摘要和时间线”模板从 AI 中提取时间顺序和最常见的错误类型。尝试用你拥有的指标或代码来验证人工智能提出的根本原因假设:该假设是否成立,或者是一个误导性的相关性?用一句话写下你的发现。

清单

  • [ ] 在将日志提供给人工智能之前,我会隐藏个人数据和秘密。
  • [ ] 我将分析缩小到一个狭窄的时间窗口并进行过滤。
  • [ ] 我认为人工智能建立的时间关系是假设,而不是因果关系。
  • [ ] 我使用指标和代码验证根本原因声明。
  • [ ] 我确认我生成的查询/过滤器的域名是真实的。
  • [ ] 我人性化地证实了尸检草图中的事实和数据。