跳到主要内容

SRE 日志分析中的 AI:真正行之有效的分层架构

· 阅读需 11 分钟
Tian Pan
Software Engineer

当团队第一次将 LLM 接入日志管道时,演示效果非常惊人。你只需粘贴一段堆栈跟踪(stack trace),GPT-4 就能用通俗易懂的语言解释根本原因。因此,接下来的自然选择显而易见:将其自动化。将所有日志都发送给模型,让它寻找问题。

这就是你每月烧掉 125,000 美元,并用“幻觉”来骚扰值班工程师的方式。

计算过程简单而残酷。一个中型生产系统每天产生大约十亿行日志。按每条日志条目大约 50 个 token 计算,每天就是 500 亿个 token。即使按照 GPT-4o 折扣后的每百万输入 token 2.50 美元计算,在不计算输出成本、重试或推理开销的情况下,你每天也要支付 125,000 美元。对流式日志进行实时的前沿模型分析不是一个优化问题 —— 而是架构选型错误。

但更严重的失败不在于财务,而在于运维。将 LLM 幼稚地应用于日志会产生告警噪音,其规模是值班团队无法承受的。研究一致表明,超过 70% 的 SRE 团队将告警疲劳列为前三大担忧。SOC 团队会过滤掉 67% 的误报投诉。当你的 AI 驱动的可观测性工具让情况变得更糟时,工程师们不会抱怨 —— 他们会绕过它。增加告警量的 AI 日志分析工具,其采用曲线是平的。

在生产环境中真正有效的架构是分层的。它将昂贵的 LLM 推理置于廉价、快速的异常检测之后,因此你只需为那一小部分真正重要的日志支付前沿模型的价格。

为什么日志不能存在于热路径(Hot Path)中

在设计分层之前,首先要了解每个 SRE 使用场景中“实时”的含义。

告警需要在 100 毫秒到 10 秒内做出决定。这个时间窗口由指标(Metrics)提供服务 —— CPU、内存、错误率、请求延迟。在大多数云平台中,日志的摄取延迟为 3 到 10 分钟。等到你的日志可以被查询时,本应触发告警的突发流量要么已经解决,要么已经升级。Google 的 SRE 手册对此有明确说明:饱和度检测和告警属于指标和结构化的时间序列数据,而不是日志文本。

诊断发生在告警触发之后,时间线以分钟计。人类的分选决策需要 5 到 15 分钟。在这种情况下,5 到 60 秒的 LLM 诊断延迟是完全可以接受的。

**复盘分析(Postmortem)**完全没有实时性约束。使用具有 50% API 折扣的批处理是合适的。

大多数尝试将 LLM 应用于日志的团队都混淆了这三个窗口。他们试图将 LLM 分析用于告警 —— 而日志无法支持这一点 —— 结果得到了一个昂贵、缓慢、嘈杂的系统,在对值班工程师唯一重要的事情上失败了:在正确的时间,为了正确的原因叫醒他们。

三层架构

第一层:快速异常检测(毫秒级,成本几乎为零)

第一层只做一件事:识别哪些日志值得关注。它作为一个流式组件运行,从你的集中式日志汇(log sink)—— 如 Kafka、S3 或 CloudWatch —— 消费数据,并仅将异常向下游传递。

这里的主力是日志聚类。Drain 算法自 2017 年以来一直是生产日志解析的标准,它通过识别固定 token 和变量组件将日志行分组为模板。十亿行原始日志可能会压缩为 5,000 个唯一的模板。从那里开始,统计方法 —— 孤立森林(Isolation Forest)、自动编码器或简单的基线偏差 —— 会标记出频率或共现模式超出正常范围的模板。

这一步几乎不需要成本。它运行在通用计算资源上,每条日志条目的延迟以毫秒计。在任何昂贵的处理开始之前,它就将候选集减少了两到三个数量级。

使用 Drain 结合传统机器学习分类器的混合方法,在标准日志异常基准测试中可以达到 86% 到 95% 之间的 F1 分数。在这里,你并没有用质量换取成本 —— 在这一层,这种权衡根本不存在。

第二层:置信度评分(秒级,极低成本)

并非每个异常都值得 LLM 关注。第二层应用轻量级机器学习模型 —— 决策树、k-最近邻集成 —— 根据诊断置信度对候选异常进行排名。它回答的是:这个异常是否显著到值得进行一次 0.01 到 0.10 美元的 LLM 调用?

这一层运行在从第一层聚类输出派生的小型特征向量上,耗时以秒计。它的主要功能是进一步减少到达第三层的人群,并提供有助于分选 LLM 响应的置信度信号。

在大规模场景下,这意味着一个每天处理十亿行日志的系统,每天可能只向 LLM 发送 50 到 200 个异常簇。这意味着每天的 LLM 成本是 5 到 20 美元,而不是 125,000 美元。

第三层:结合 Runbook 落地(Grounding)的 LLM 诊断 (5–60 秒,目标成本)

只有确认的高置信度异常才会到达 LLM。当它们到达时,提示词(Prompt)结构决定了你得到的是可操作的输出,还是在事故期间没人阅读的长篇大论。

生产部署的一个核心洞察是:提示词中的原始日志转储产生的结果,不如结构化的诊断上下文。有效的模式如下:

  • 输入:来自第一层的异常特征(模板模式、偏差幅度、受影响的服务)加上结构化元数据(服务名称、部署版本、最近更改)
  • Runbook 注入:按服务和失败类型索引的 JSON 格式运维手册(Runbook),通过精确匹配或相似性搜索检索
  • 约束输出格式:仅限三个字段 —— 发生了什么,为什么重要,下一步该做什么

这不是摘要。这是结构化的决策支持,提示词应该明确这一点。“总结这些日志”会产生段落。而“将连接超时 Runbook 应用于这些症状并输出:[原因、影响、修复步骤]”则会产生值班工程师可以在 30 秒内采取行动的内容。

Microsoft Azure 的事件管理系统在 2025 年初已在 15 个以上的内部团队中部署,遵循的就是这种模式。其中一个团队测量到平均修复时间(MTTR)减少了 38%,诊断准确率达到 90%。准确性源于“落地(Grounding)” —— LLM 不是凭空推理,而是将已知模式应用于新证据。

误报问题及其为何扼杀采用率

分层架构解决了成本问题。它并不会自动解决误报问题。这是两个截然不同的问题,将它们混为一谈是导致团队宣告“我们尝试过将 AI 用于日志,但它并不奏效”的原因。

一个常见的错误是把第一层筛选出的每个异常都喂给大语言模型(LLM)。即使有良好的聚类,第一层也会筛选出不寻常但良性的异常——如计划任务、已知的流量峰值或在聚合层面看起来很奇怪的配置更改。如果没有第二层的置信度评分,这些异常就会到达 LLM,由它生成一个听起来很自信但却是针对非问题的诊断。值班工程师进行调查后一无所获,然后就会把你的 AI 告警加入到心理忽略名单中。

TEQ 模型(带有定性评分的分层集成)证明了在保持 95.1% 的检测率的同时,能减少 54% 的误报。这种组合——更少的误放告警,而不是整体告警数量的减少——才是定义值班采用成功的关键。如果精度高,工程师会容忍告警量;但如果精度低,无论 LLM 的解释听起来多么令人印象深刻,他们都无法忍受。

对每一层分别追踪精确率(Precision)和召回率(Recall)是必须进行的仪表化工作。如果第一层的筛选率增加,而第三层的驳回率也随之增加,说明你遇到了第二层的校准问题。如果工程师标记 LLM 诊断为“无用”的比例超过 20%,则说明你的 Runbook(运维手册)覆盖存在缺口。

集成模式

大多数生产部署都将分层系统作为 sidecar 微服务集成,而不是修改主观测栈。模式如下:

  1. 主日志接收端(Kafka 或 S3)分流到两个消费者:现有的索引器(Elasticsearch、Loki)和异常检测流水线。
  2. 异常检测流水线将确认的异常写入二级队列。
  3. 一个独立的服务消费该队列,处理 LLM API 调用,并将诊断输出写入事件管理系统(PagerDuty、Opsgenie 或内部工单系统)。

这种解耦意味着 AI 分析层可以独立故障,而不会影响主观测栈。它还能实现独立扩展——第一层始终开启且可水平扩展,第三层则是突发性的,可以在 API 速率限制事件期间进行排队而不会丢失数据。

对于 Runbook 的集成,有效的模式要么是使用精确匹配的服务/故障类型键检索的结构化 JSON 存储,要么是在故障类型无法清晰映射到已知 Runbook 时使用小型向量索引进行语义检索。从精确匹配开始——它更快、更便宜且更可预测。

需要监控哪些指标

除了标准的 LLM 追踪(Token 计数、延迟、单次调用成本)之外,还要添加这些针对分层流水线的特定指标:

  • 第一层筛选率: 日志总量中转化为异常候选者的比例。突然的增加通常意味着部署或流量变化,而不是系统问题。
  • 第二层通过率: 第一层异常到达 LLM 的比例。根据值班工程师的误报反馈来校准此项。
  • LLM 诊断精确率: 由处理事件的工程师标记为准确的 LLM 生成诊断的百分比。应在事件关闭时收集,而不是异步收集。
  • Runbook 命中率: 第三层调用成功匹配 Runbook 的比例。命中率低意味着你的 Runbook 覆盖进度落后于你的服务组合。

这四个指标为你提供了独立改进每一层的反馈环。IBM 在 1,376 个案例中的生产部署表明,一旦流水线经过校准,60% 的事件每次能节省 30 分钟或更多的时间——但这种校准要求从第一周起就建立这些反馈环。

常见的失败模式

正确实施该方案但随后逐渐失效的团队通常有一个共同的模式:他们向第一层添加了更多日志源,却未重新校准第二层,并且停止收集值班工程师的诊断精确率反馈。

如果不进行重新校准,第二层的置信度阈值就会过时。新服务具有不同的日志模式,集成系统开始将更多低质量的候选者传递给 LLM。由于没有反馈,你直到值班工程师已经对 AI 诊断置之不理时才会察觉——到那时,你拥有的是一个没人使用的昂贵系统。

这种架构不是一劳永逸的实施。它需要一种更像模型服务(Model Serving)而非传统监控基础设施的运营纪律:漂移检测、定期的阈值重校准以及与实际事件结果挂钩的持续精确率追踪。

这种运营投入是将那些利用 AI 辅助日志分析降低 MTTR(平均修复时间)的团队,与那些在被忽略名单中又增加了一个观测工具的团队区分开来的关键。

References:Let's stay in touch and Follow me for more thoughts and updates