☰
AIOps实战:AI故障定位与自动排障的边界与落地
2026/10/31 3:44:26 网站建设 项目流程

我们团队去年开始把 AI 运维(AIOps)工具正式接入生产环境,落地之前最常被同事问的一句话是:这玩意儿能不能半夜自动把故障定位出来?定位之后,它敢不敢自己动手排除?

先说结论:故障定位,AI 已经能做到相当可用的程度,尤其在日志量大、指标多维、告警频繁的互联网业务场景里,它比人肉眼定位快得多。但"让它自己动手排除故障"这件事,成熟的运维团队大概率不会在非受控环境里直接放开。不是 AI 能力不够,而是工程上"自动修复"的风险边界和责任划分远比大多数人想象的复杂。

这篇文章就围绕"定位"和"排除"这两件事,把我这一年的实测经验、技术选型、踩坑过程和最终落地方案完整写出来。全文偏向可复用的实战视角,不堆概念,适合正在评估 AI 运维工具、或已经上了监控平台但想往自动排障方向走的运维工程师和技术负责人参考。

1. 先搞清楚:定位和排除是两件事,AI 在两端的成熟度完全不同

很多人说"AI 自动运维",脑子里想的是一条流水线:监控报警 → AI 发现异常 → AI 分析根因 → AI 执行修复 → 服务恢复。这个流程听起来完整,但实际工程里,每一步的难度和技术成熟度天差地别。把"定位故障"和"排除故障"混为一谈,是后续所有决策出错的开端。

1.1 大多数人想象中的 AI 排障流程

我刚开始设计这个项目时,也和大多数人一样,画过一条理想链路:

  • 凌晨 3 点,Prometheus 告警触发,钉钉群里跳出"线上支付接口 P99 延迟超过 2s"。
  • AI 自动拉取过去 10 分钟的指标、日志、调用链数据。
  • AI 分析出根因:"支付服务 A 实例所在宿主机 CPU steal 过高,是同一物理机上的离线任务争抢 CPU 导致。"
  • 然后它自动执行:把离线任务降级,或给支付服务扩容一个 Pod。
  • 早上 8 点工程师上班,发现故障已经恢复,留下一条 AI 处理记录。

这套流程从技术形态上确实存在,很多商业化 AIOps 平台也在往这个方向推。但真正动手实施时你会发现,前三步相对成熟,第四步是整个链条中最危险、也最让团队不敢放手的环节。原因不复杂:定位错了可以重来,执行错了可能直接让故障从"可用"变成"不可用"。

1.2 故障定位的成熟度远高于故障排除

从技术发展水平看,"定位"本质上是数据分析问题。异常检测、日志聚类、指标关联分析、调用链追踪,这些能力在 AIOps 领域已经打磨了好几年,底层技术成熟度高,而且和具体业务风险评估解耦,所以敢放心用。

"排除"则完全不同。自动排障意味着 AI 要直接修改线上环境的状态,本质上是"变更操作"。变更操作最怕什么?最怕不可预期的影响。一个参数、一条命令、一次重启,在某一台机器上没问题,在另一台机器上可能触发完全不同的连锁反应。这个风险不是数据分析能覆盖的,它需要的是对业务容错能力的深刻理解。所以很多系统把"自动修复"做成"半自动",AI 给出修复建议,人工点确认,甚至由另外一套自动化工具(如 Ansible、K8s Job)去执行,AI 不直接触达生产环境。

1.3 从工程视角给 AI 排障划分边界

经过这几个月的折腾,我建议一开始就要把 AI 运维能力分成三个边界,别混在一起做:

  • 边界一:AI 只做异常发现和辅助定位,输出疑似根因、关联证据、修复建议,不做任何变更动作。
  • 边界二:AI 在受限场景内自动执行低风险操作,比如清理无用的临时文件、重启已知无状态的业务 Pod。
  • 边界三:AI 跨系统联动执行有状态、有依赖链路的变更,需要审批流、灰度策略和回滚预案。

我们最终落地时,长期运行的是边界一和边界二,边界三只在特定场景、经过严格测试后小范围放开。这个分级不是保守,是经过两次事故验证后得出来的结论。后面我会详细说踩过的坑。

2. 故障定位这一步,AI 到底能做到什么程度

既然要聊 AI 能不能自动排障,就得先看看它排障之前的"定位"能力是不是真hold得住。我实测下来,定位阶段是值得投入的,但前提是你得把数据喂够、喂对。这里分开讲清楚 AI 看什么数据、怎么分析、以及大模型给日志处理带来的变化。

2.1 三箱数据打底:指标、日志、调用链

AI 做故障定位,本质上和资深工程师做排查是一样的,只不过它的"鼻子"和"眼睛"是三类可观测数据:

  • 指标(Metrics):CPU、内存、延迟、错误率、QPS 等时序数据。
  • 日志(Logs):应用日志、系统日志、访问日志,文本形式。
  • 调用链(Traces):请求从哪里进、经过了哪些服务、每段耗时多少。

这三类数据中,指标最适合做异常检测,因为它是数值型的,天然可以用算法判断波动。日志最适合事后定位根因,因为里面有具体的报错信息。调用链则最适合做服务间的因果推断,能看出延迟到底在哪一跳被放大的。

我们实际的做法是在采集层用 OpenTelemetry 做统一埋点和采集,然后按服务维度打标签,把三类数据关联到同一个"请求视角"下。这一步是后期 AI 能有效做个根因分析的前提,没有统一的数据模型,AI 的关联分析基本无从做起。说句直白话,你数据质量都不行,别指望 AI 给你定位。

2.2 根因分析的常见套路:告警聚团 + 时序异常检测 + 故障传播推断

AI 定位故障的常规套路,业内说得最多的就是告警聚类(把告警风暴里的上千条信息收敛成一个根因)、基于时序指标的异常检测、以及基于调用链的故障传播推断。这一套互相配合,基本能覆盖大部分故障。

告警聚团,最直接的效果是把"同一时间大量告警"收敛成一个根因。比如某次核心数据库抖动,可能有几十个服务跟着超时,告警墙刷了上百条,AI 根据告警发生时间、服务依赖关系、告警特征把 300 条告警归成 1 个根因事件,指向数据库实例。这一步实现起来相对容易,效果却立竿见影。很多体感比较明显的 AIOps 落地,其实主要就是告警聚团做好了。

时序异常检测上,我们试用过自研阈值加 AI 模型的混合方案。纯固定阈值太容易误报,纯机器学习在业务波动大的场景又常常把正常的促销峰值当故障。最后用的方案是对每个指标设动态基线,基线由历史数据按小时、星期规律拟合,超出基线幅度超过一定倍数才告警。把误报率从原来固定阈值方案的每天 20 多条压到了个位数。这算是"看得见病"的第一步。

故障传播推断,主要是依据调用链的父子关系建模。服务 A 调 B,B 调 C,如果 C 出问题 A 大概率也会异常。但要注意,这只是"相关性",不是因果性的绝对证据。AI 给出的是"最可能的传播路径",运维人员还是要带着验证的心态看待结果。

2.3 大模型给日志解读带来的变化

以前做日志分析,大家主要是靠规则和正则匹配关键报错特征。现在接入大模型后,较明显的变化在于它可以直接对自然语言形式的异常日志做语义解读,能面向新人输出"人话版"的故障原因说明,而且能把不同服务的多段日志串起来讲出一个完整故事。

举个例子:以前一条"request context canceled"日志,不熟悉业务的同事根本不知道后面要查什么,误以为是自己代码的问题。大模型可以把日志上下文、当时依赖服务超时信息、调用链数据拼起来,输出:这条报错是因为下游支付回调服务在 2 秒内没有返回,触发超时取消,建议优先检查下游服务的负载和数据库慢查询。说实话,哪怕 AI 只做到"把信息组装成年人能快速理解的语言"这一步,对排查效率的提升也已经很大了,因为它帮团队省去了大量翻文档、捋上下文的时间。

不过这里得加个提醒:大模型的总结性输出,不能直接当成权威结论。它的核心价值是"线索聚合器",不是"真相法官"。尤其在多服务交互的复杂场景里,它给出的根因解释,你最好先按"假设"对待,能用监控页面求证一下再下结论。

2.4 实战中的两种正确用法

在我这一年的使用体验里,AI 定位有两处用法,ใช้着舒服且不容易翻车:

第一种是把 AI 当"第二双眼睛"。两个资深工程师同时怀疑不同的原因,谁也劝不动谁时,让 AI 独立拉数据、独立做一次根因分析,输出的结果往往能指出一个被忽略的方向。多数时候不是因为 AI 比人聪明,而是因为它不带偏见、能全量扫描而不是只盯着自己熟悉的模块。

第二种是把 AI 当"告警降噪器"。过去值班人员最怕的不是严重故障,而是告警轰炸把人搞麻木。这套系统上线后,连续一周的告警经过 AI 收敛,能减少到不到原来的四分之一,每个收敛后的事件自动带上影响面评估和初步嫌疑对象。值班的人可以快速决定"这个需要马上介入"还是"继续观察"。光是这一步就对团队是极大的解脱。

3. 真正卡住的地方:AI 敢不敢动手排除,答案可能出乎意料

定位聊完,回到最核心的问题:AI 敢不敢自己动手排除。我们一开始的假设是"不敢"主要因为技术不成熟,但后来发现,技术并非唯一门槛,工程风险、责任归属和可逆性才是真正的坎。这个部分我展开讲透。

3.1 排除故障是变更操作,改错一个参数连资深工程师都救不回来

故障排除的本质是执行变更。排查系统时,给一台"看起来状态不对"的服务器重启听起来简单,但如果这台服务器上跑着一个有状态的分片数据库,重启可能导致数据同步重放,加重负载。AI 的模型再准确,它能理解这个"看起来不对"背后有没有隐性依赖吗?很难。

我们自己的例子:有一次 AI 检测到某灰度服务多次健康检查失败,按预设规则自动把实例标记为不健康,并强制重启该 Pod。结果重启后实例重新加入时,正赶上数据库在做批量事务提交,瞬时连接数翻倍,反而把数据库压垮了。如果当时是资深工程师处理,他就会先看这个 Pod 的健康检查失败是否和数据库负载有关,不会贸然重启。AI 只看到了"实例不健康"这单一维度的信息,没有看到依赖侧压力高企的上下文。这让我深刻意识到,自动排障的最大风险是"单点视角决策,多点耦合执行"。

3.2 故障现场是不可逆的,排障本身要留取证空间

很多工程师都学过,出故障时第一要务是"保护现场"。日志、堆栈、线程状态、网络连接,这些东西一旦你执行了某个"修复动作",可能就被覆盖或破坏了。比如 AI 觉得 CPU 飙高是因为某个任务卡死了,执行 kill 完事后,问题可能消失了,但根因证据也没了。

人还能靠经验在动作之前先采集现场数据,AI 如果设计得不细致,会直接跳过取证环节。我们的系统里,"执行前快照"是硬性要求,任何自动修复动作前必须自动保存指标窗口、日志片段、进程状态,并且把"现场保全"步骤也列入审批环节。这一步看着不起眼,实际上是后续复盘和追责的基础。没有这一步,AI 一旦动手就"毁灭证据",后续不管故障修没修好,整个流程都失去了改进的可能。

3.3 出了事故,到底算谁的?责任边界比技术边界更难定义

这个是我在这套系统里体会到最深的一条:AI 自动排障真正卡住的不是代码,不是算法,而是责任边界。今天 AI 修复成功了一百次,没人会觉得是 AI 的功劳,负责人也不会专门表扬系统;但只要 AI 有一次判断失误,把一个线上的正常服务给停掉了,负责审批、实施这套系统的技术团队必然要承担全部后果。

我用一个生活化的类比来解释:就好比你家里装了一套智能消防系统。正常情况它自动探测火情、自动喷水,确实省心。但万一它误把炒菜的油烟当火情,喷你一身水,损坏了厨房电器,你会不会想拆掉它?线上系统比这更敏感,因为"喷水"这个动作本身,可能比火灾给业务带来的损失还大,而消防系统的责任主体还是业主自己。所有自动排障的系统,都逃不开"职责归属"这个机制问题。

我们最终落地了一个相对合理的机制:自动修复动作必须留下"单据",写明执行依据、决策链路、影响范围,责任人可以提前设置好审批等级。简单说,AI 不是"责任人",AI 是"提建议的执行者",最后承担失败后果的一定是人。这样的定位,团队才敢放开一些受限场景的自动执行。

3.4 AI 幻觉在排障里的放大效应

大模型有一个众所周知的问题:幻觉。在聊天场景里幻觉出来是笑话,在排障场景里幻觉可能让系统执行一个荒谬的修复动作。比如 AI 在分析日志时,把"INFO"级别某个正常的 hook 回调日志当成异常,基于它给出"怀疑是代码逻辑错误,建议回滚到上一版本"的建议。这种建议倒不会直接毁掉什么,但如果系统做成了全自动执行,后果就难说了。

所以综合这些因素,"敢不敢自己动手"的答案就很清晰了:AI 本身没有"敢不敢"的情绪,它只会按程序设计执行;真正"不敢"的是人。而人的这个谨慎不是保守,是对风险有充分认知后的合理选择。想清楚这一点,就会明白自动排障的道路上,真正的产品形态不是"AI 全自动排障",而是"AI 有边界的自动排障"。

4. 折中的落地路线:让 AI 自动排障,但不背全锅

既然全自动排障不能一上来就放开,我们实际走的是三种折中路线。这三种路线不是互相排斥,而是按风险等级并行运行。我可以负责任地说,这是目前性价比最高、最容易在团队中铺开的 AI 排障形态。

4.1 方案一:智能建议 + 人工确认(近乎零风险,先跑通信任)

这是最保守、也最容易启动的一步。AI 分析后输出修复建议,并提供证据链和执行命令预览,但必须由值班人员点击确认后才会在平台内执行,甚至命令由人工复制到跳板机执行。

这一阶段的目的是建立团队信任,也用来逐步校准 AI 的建议质量。我们在内部做了一个指标叫"建议采纳率",前三个月大概只有 40%,很多值班老手一看建议就知道是废话:"这不就是在升级重启吗,我自己也会。"但用三个月把数据调顺之后,采纳率能到 70% 左右。别小看 70%,核心价值在于"AI 帮人把决策成本打下来了",人不用再花 20 分钟翻数据,看 2 分钟建议和证据就能拍板,比如"重启这个 Pod 之前建议先摘流量",这本身就是效率提升。

4.2 方案二:受限场景下的半自动执行(小范围放权,价值感最强)

当团队对 AI 建议的信任积累起来之后,可以筛选一些风险极低的场景,允许 AI 直接执行修复,但执行命令必须由套件内置的固化 playbook 提供,AI 不自由发明命令。

举例来说,典型低风险场景包括:

  • 无状态服务的实例重启,自动绕过健康检查失败的节点。
  • 磁盘使用率超过阈值后,自动清理确定性安全目录下的临时缓存文件。
  • 扩容和缩容:当工作负载连续 N 分钟超过基线上限时,按既定模板增加副本数。

这几种场景的共同特征是:操作可预期、影响面可控、回滚容易。我们在系统里把它们做成独立的自动化单元,命名为"修复动作库",AI 只选择动作,不创作动作。这句话我当时和团队重复了很多遍:AI 可以从库里挑锤子或螺丝刀,但不能自己去锻造一把新锤子。这正好把大模型幻觉风险控制在"决策选择"层面,而不是"动作创造"层面。

4.3 方案三:建议与执行的权限分级(把风险交给流程而不是靠 AI 自觉)

最终我们搭建了一个分类执行的权限矩阵,按影响面和操作类型把修复动作分成了四个等级:

等级影响范围示例动作执行方式
L0单实例、无状态Pod 重启、清理缓存AI 自动执行
L1单服务、影响有限摘除故障实例流量、实例扩容AI 执行 + 自动回滚
L2核心服务、跨模块配置动态调整、依赖降级人工确认后自动执行
L3全局变更、涉及数据面回滚版本、数据库主备切换人工审批并手动执行

这套分级的意义在于,把"敢不敢"从人的情绪判断变成流程判断。AI 不需要判断"风险高不高",只需要遵守权限等级。等级门槛设在哪、谁能升权限,由运维负责人和 SRE 一起定期评审。走完这套流程,团队里最反对自动排障的老工程师,态度也从"绝对不行"变成了"只要按权限执行,我可以接受可控风险"。

5. 没有这些数据底座,AI 排障全是空中楼阁

聊到这里,肯定会有人说:你们思路是不错,可我们现在的系统连日志都没完全采集,怎么开始?我的经验是:自动排障的前置工作,至少要有四项基础设施,缺一项,整个系统都会随时翻车。这个部分必须叮嘱到位。

5.1 统一采集、统一标签、统一存储,先保证数据能对上

首先要确保指标、日志、调用链都进入同一套存储或数据仓库,并且统一了命名规范和服务标签。不然 AI 做关联分析时,一会儿在 A 系统查日志,一会儿在 B 系统查指标,中间全靠人工翻译,自动化的意义就没了。

我们的做法是使用 OpenTelemetry 统一埋点格式,服务名、命名空间、实例 ID、部署环境这几个核心标签全系统保持一致,日志格式尽量结构化(JSON 字段),避免纯文本解析带来的脆弱性。这一部分说实话还挺费劲的,要把老系统里的非结构化日志逐步改造,但改造完成后,数据的质量上来了,AI 定位的准确率也明显跟着上来了,这个钱和精力花得值。

5.2 知识库和变更历史,不给 AI 装上"业务记忆"它只会瞎猜

AI 排障有一个隐性问题:缺少业务上下文。比如某个业务每天晚上定时跑对账任务,期间会占用大批量数据库连接,这在这些服务早期接入监控时全被当成异常。AI 缺乏对业务模式的认知,会不管时间点、不分场景地报"数据库连接数高",然后可能触发"自动扩容数据库连接池",造成资源浪费甚至干扰正常批处理。

解决的办法是建内部的知识库,把"哪些场景是预期行为""哪些时间段允许有短暂的指标尖峰""哪些告警属于已知误报"定期沉淀下来,作为 AI 决策时的上下文补充。这其实就是人类工程师的"经验"在系统里的外化。没有这一步,AI 只是个不太懂业务的"高智商实习生",分析能力再强也容易在业务常识上犯错。

5.3 变更记录要留痕,每一次自动执行都得可回放、可审计

最后一个基础条件是变更审计闭环。不论 AI 自动执行还是半自动执行,每一条变更动作都需要记录:执行时间、执行对象、触发理由、使用哪条修复动作、执行前后关键指标对比、审批人是谁。我们的审计信息直接接入团队现有的追踪系统,方便任何一次故障复盘都能完整回放当时的决策链条。

这里有两个实际好处。第一个是出了事故能快速还原责任线,避免了"崩了不知道是谁干的"这种情况;第二个是回放记录本身就是改进 AI 的养料——当某个 AI 执行动作被事后证明是错误选择时,这些数据就被拿出来作为负样本,优化模型和调整权限规则。可以这么说,自动排障系统的成熟度,几乎等同于它积累下来的变更复盘数据的质量。

6. 我自己的实测体会与几条实在建议

走完这么多阶段的落地,我想把最后一部分留给更真实的操作层面。如果你现在正准备在公司里推动 AI 运维或自动排障,以下几条是我踩过坑之后最想分享的实在建议。

6.1 从定位开始做,别一上来就奔着"自动修复"去

我非常理解老板喜欢你直接汇报"AI 能自动修复故障",但我在实际推进时始终坚持一条路径:先让 AI 把故障定位做到高信噪比,让团队在排查场景里依赖它,然后才谈自动修复。原因很简单:自动修复是"决策加执行"的组合,如果 AI 连"定位"这层信任都没建立起来,执行层再完美,团队也不敢把开关交出来。

我建议你设一个验收门槛:连续三个月,AI 给出的根因分析在团队评审中达到 70% 以上的"有效"评价,再启动自动修复场景设计。否则你会陷入一个尴尬局面:团队嘴上开着自动执行,实际每天悄悄取消 AI 的操作。这种"伪自动化"最消耗信任和资源。

6.2 让 AI 做"断路器",而不是"主刀医生"

自动排障不只是"发现问题然后修复",它还有一个同样重要的角色:在故障刚发生时,第一时间控制影响蔓延。比起让 AI 深度决策修什么,我强烈建议先让 AI 做"断路器"——检测到核心服务异常时,自动摘流量、自动降级非核心依赖、自动封禁异常的过载来源,这些动作的性质不是"修复",而是"止损"。

断路器类动作通常固定、简单、可逆性强、影响面容易解释清楚,AI 适合执行这类决策。我把"主刀医生"式的复杂修复留给人工和人工确认的流程完成。事实证明,对 AI 运维的信任建设,最先跑通的不是"AI 治好了病",而是"AI 在恶化前先切断了影响",这给团队带来的安全感比什么都直观。

6.3 三个更容易出业绩的落地场景,建议优先试点

如果你只能挑三个场景起步,我给这三个方向:

  • 告警降噪与收敛:把刷屏式告警变成 3~5 条含根因判断的事件,半个月就能见效。
  • 磁盘等资源类风险的自动处置:低风险、高重复、人工处理价值低,适合 AI 自动执行。
  • 核心服务异常时的自动流量切换:属于"安全保障"动作,风险可控,业务价值高。

这三个场景都不需要 AI 做特别复杂的业务推理,但产出清晰可见。先在这些点上拿下成绩,再去申请更宽的执行权限,会顺利得多。反过来说,如果你一开始就在数据库变更、核心配置下发这类高风险领域劝团队放开,那基本等于给整个项目判了死缓。

实践走了一年,我的整体体会是:AI 运维自动定位故障这件事已经不是概念,而是值得认真落地的工程实践;自动排除故障则不用急着追求"全自动",它最好的形态是"有边界的自主 + 有流程的控制"。把边界划清楚,把决定权和责任保留在人这一侧,AI 这台引擎才能真正被敢用、敢放开、敢长期依赖。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询