别让 AIOps 变成“闭眼修系统”——说说可解释 AIOps 如何防止二次事故

举报
Echo_Wish 发表于 2025/12/19 21:31:25 2025/12/19
【摘要】 别让 AIOps 变成“闭眼修系统”——说说可解释 AIOps 如何防止二次事故

别让 AIOps 变成“闭眼修系统”——说说可解释 AIOps 如何防止二次事故

最近我听到一个很典型的吐槽:

“我们上了 AIOps 之后,系统是能自动修,但修完一次,炸两次。”

说实话,这事一点都不意外。现在不少企业玩 AIOps 都喜欢讲自动闭环:

  • 自动发现问题
  • 自动定位
  • 自动修复
  • 自动回归

听着爽得很,但缺了一个最核心的东西:可解释性。

说白了,AIOps 要做的不是“黑盒拍板”,而是“让机器告诉你为啥这么搞”。
否则一次修复,一套系统跑偏,你就是把运维从人肉地狱里拽出来又踹回去。

今天这篇,我就想接地气地聊聊:为什么 AIOps 必须可解释,怎么做到可解释,以及怎么避免黑盒修复带来的二次事故。

不学术,不装腔,都是运维圈天天爆的坑。


🥇“黑盒修复”为啥危险?

一句话总结:

没有解释的 AIOps 修复,就是“经验算法 + 误杀风险”。

举几个我在行业里见到的真实案例:

❌ Redis QPS 高 → 程序自动重启

结果重启的是缓存集群的核心节点,业务雪崩。

❌ CPU 90% → 自动 Kill Top 进程

结果干掉的是流控线程,濒死业务更撑不住了。

❌ 预测磁盘要满 → 自动扩容

结果扩容错卷组,全站 IO 抖动、写入异常。

这些事故的神逻辑就是:

“模型说它有问题,我干它。”

这太危险了,因为根本没有向工程师说明:

  • 你判断问题的指标是什么?
  • 你为什么认为风险高?
  • 你确定问题在这里?你风险评估了吗?

AI 不是神,不解释的自动化就是“带电作业”。


🥈真实世界的 AIOps 是不确定的

我们要承认一个前提:

运维问题不是“分类问题”,而是“多变量叠加”。

同一个 CPU 90%,

  • 有时说明业务忙
  • 有时说明死循环
  • 有时说明 GC 在打分代
  • 有时说明 I/O 阻塞假忙

你让黑盒做闭环,不就是把复杂问题“数字化拍脑袋”吗?


🥉“可解释 AIOps”是什么?

一句话——AI 不是替你决策,而是给你透明证据、可追溯逻辑、风险说明

可解释能力至少包括 4 个模块:

✔ 1. 特征溯源:我为什么这么判?

比如诊断慢 SQL,不是说“SQL 慢了”,而是列出证据链:

  • 扫描行数
  • 计划执行
  • 慢字段
  • IO 等待
  • 索引调用情况

✔ 2. 风险说明:不修多糟、修了多险?

“修复风险评分:0.85,可能影响 3 个依赖业务”

✔ 3. 决策备选方案

不是一句:“I’ll fix it for you”
而是:

  • Option A:重启服务(风险 65%)
  • Option B:刷新配置(风险 15%)
  • Option C:限流观察(风险 3%)

✔ 4. 行为回放与审计

不支持回放的 AIOps 修复都是耍流氓。

你必须看见:

  • 修完前是什么参数
  • 修完后是什么参数
  • 误判概率多少
  • 历史类似 case 如何

🛠 AIOps 怎么做“可解释诊断”?

举个简单代码例子,用 Python 模拟一个可解释修复建议系统:

def diagnose(cpu, gc_time, thread_block, risk_model):
    reasons = []
    if cpu > 85:
        reasons.append("CPU 使用率超过 85%")
    if gc_time > 30:
        reasons.append("GC 时间占比超过 30%")
    if thread_block > 100:
        reasons.append("阻塞线程数超过 100")

    risk = risk_model.predict([[cpu, gc_time, thread_block]])[0]

    actions = [
        ("重启服务", 0.7),
        ("触发 GC 优化", 0.4),
        ("限流观察", 0.15)
    ]

    return {
        "reason": reasons,
        "risk": risk,
        "actions": sorted(actions, key=lambda x: x[1])
    }


print(diagnose(90, 40, 120, risk_model))

这个代码展示的不是“最牛算法”,而是一种思想:

  • 模型告诉你凭啥判断
  • 明确风险值
  • 提供多个修复策略排序

这就是“可解释”。


🧨怎么避免黑盒造成二次事故?

我要总结三个“硬规矩”:


🚫 规则 1:不能直接修

自动修复 = 先模拟。

模拟成功才允许执行。

比如你的限流策略:

if simulate_effect(action) > threshold:
    apply(action)

模拟机制,能救命。


🚫 规则 2:不能跨层操作

AI 不准越权:

  • POD 自己弄自己
  • 节点不要乱删
  • 集群配置必须走审批

否则你就是让一个拿菜刀的人操控核弹。


🚫 规则 3:每次自动化必须留审计

像下面这样记录:

{
  "original": "replica=3",
  "changed": "replica=5",
  "reason": "I/O queued",
  "risk": 0.42
}

没审计的自动化就是乱拳打人。


🧩再高冷的算法,都要“人类语言”

我们必须把模型输出变成人的话:

  • “我认为服务有内存泄露”
  • “风险高,因为过去 5 次类似 case 都导致重启”
  • “修复建议风险系数 80%”
  • “依赖 3 个下游服务可能受影响”

运维不是数学考试,而是工程沟通


🔥一个反思:AIOps 的价值不是省人,是省命

有的人把 AIOps 视为“裁掉运维人力的武器”。
我说句不好听的——这种企业最后都会反噬。

AIOps 应该做的是:

  • 帮助定位
  • 帮助解释
  • 帮助决策
  • 帮助执行

而不是“替人拍脑袋”。


🏁结语:AIOps 不是上帝,它需要透明化

我希望未来的 AIOps 长成这样:

像老司机一样解释风险,而不是像赌徒一样压注命运。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。