实战 📋 7 个步骤 第 213 / 446 篇

用 AI Agent 做 Oncall 运维告警处理:告警初筛 + 日志分析 + 根因草稿

微软 Orca-Bench 基准显示,当前 Agent 在简单运维任务成功率超 85%,但复杂故障骤降到 30% 以下。本教程教你用 AI Agent 搭一个 Oncall 助手:自动初筛告警、拉日志、做根因分析草稿,并讲清哪些环节必须人工兜底。

2026.08.01· 24 分钟阅读· 约 1573 字· 🚨 Oncall Agent / 📊 运维自动化

半夜被告警叫醒,盯着眼花缭乱的监控面板,却分不清哪条是真故障、哪条是误报?这正是 AI Agent 最该接管的脏活累活。微软研究院 2026 年 7 月发布的 Orca-Bench 基准显示:当前 Agent 在简单运维任务(日志分析、服务重启)成功率超 85%,但复杂分布式故障的根因定位骤降到 30% 以下。本教程教你搭一个 Oncall 助手,让它干"初筛 + 拉日志 + 写根因草稿"的活儿,把人留给真正需要判断的环节。

🚨 本教程适合:运维/SRE、DevOps、以及被告警轰炸到崩溃的小团队技术负责人。你会用到命令行和至少一家云/监控平台(Prometheus、Grafana、阿里云 ARMS 等皆可)。

先搞懂:Agent 在 Oncall 里该干哪三层?

用一张表分清"AI 能 fully 干"和"必须人拍板"的边界,这是 Orca-Bench 给我们最大的启示:

层级Agent 能做的是否要人
初筛(Triage)聚合告警、去重、标严重度基本不用
分析(Analysis)拉日志、查指标、给可能原因抽查即可
决策(Decision)——必须人(高危操作)

铁律:Agent 只给"草稿和线索",绝不自动执行重启、回滚、删库等高危动作。Orca-Bench 证明复杂故障它还会翻车,把执行权握在自己手里。

Step 1:准备 Agent 可调用的"眼睛"

1 给 Agent 接上监控与日志

Agent 要分析,先得能看到数据。用 MCP 或脚本把监控/日志系统暴露给它:

# 示例:用 MCP 把 Prometheus + Loki 接进Agent
{
  "mcpServers": {
    "prometheus": { "command": "npx", "args": ["-y", "mcp-server-prometheus", "--url", "http://prom:9090"] },
    "loki":       { "command": "npx", "args": ["-y", "mcp-server-loki", "--url", "http://loki:3100"] }
  }
}
# 没有现成 MCP?用脚本包一层 REST 也行
💡 新手提示:优先用社区已有的 Prometheus/Loki/Grafana MCP Server,省去自己写适配。告警平台(如钉钉/飞书机器人)也要接上,方便 Agent 把结论推给你。

Step 2:写一份"Oncall 人设"提示词

2 立规矩:只分析、不执行

这是整个系统的"安全护栏",务必写清楚红线:

你是我们的 Oncall 分析助手,职责:
- 收到告警后,聚合相关告警、判断严重度(P0-P3)
- 拉取近 30 分钟相关服务的日志与核心指标
- 给出"最可能原因 Top3"和"建议排查步骤"
- 绝不执行任何写操作(重启/回滚/删数据/改配置)

红线:
- 任何执行类操作,只给出命令草稿,等我确认
- 不确定时明确说"需人工确认",不许编造根因
🔑 关键技巧:把"绝不执行写操作"和"不许编造根因"两条写死,能挡掉绝大多数 Agent 误操作和信息幻觉。

Step 3:让 Agent 自动初筛告警

3 把"误报"挡在叫人之前

配置告警触发后自动调用 Agent,先做个聚合去重:

# 伪流程:告警 Webhook → Agent
收到 12 条"CPU 高"告警(来自同一集群)
Agent 输出:
  严重度:P2(非 P0,非全集群)
  关联:与 5 分钟前的"发布事件 #8821"时间吻合
  建议:先观察,疑似发布引起,不必立即叫人
  → 推送到 Oncall 群,附聚合摘要

别让 Agent 直接 silence 告警!它只负责"建议严重度",最终是否降级由人决定。自动静默是真故障漏报的高发源头。

Step 4:让它拉日志、做根因草稿

4 人还没起床,分析已经出稿

对确需关注的告警,Agent 主动拉数据并产出草稿:

Agent 自动产出(示例):
【现象】order-service 错误率 14:02 起升至 8%
【关联指标】下游 pay-service P99 延迟同步抬升
【日志线索】14:02 出现大量 "timeout calling pay-service"
【可能根因 Top3】
  1. pay-service 扩容未完成,连接池打满(概率高)
  2. 网络策略变更导致跨区延迟(概率中)
  3. 上游限流配置误改(概率低)
【建议排查】先查 pay-service 实例数与连接池;命令草稿见下
【命令草稿】(待我确认再执行)
  kubectl get pods -n pay | grep -v Running
💡 这份草稿就是你的"交接班笔记"——人上线后照着查,省去从零翻日志的 20 分钟。

Step 5:把结论推到群里,等人拍板

5 用 IM 机器人完成"最后一公里"

接上钉钉/飞书/企微机器人,让 Agent 把草稿发到 Oncall 群,并 @ 当班人:

# Agent 输出结构化卡片到群
[Oncall 分析] order-service 错误率异常
严重度:P1
根因草稿:pay-service 连接池打满(高概率)
需你确认:是否执行 kubectl 扩容?回复"执行/稍等"
# 人回复"执行" → 才触发后续自动化(且要走审批)

执行权永远在"人回复确认"这一步之后。把确认动作显式化,既提速又不失控。

Step 6:复杂故障果断升级给人

6 承认 Agent 的边界

Orca-Bench 告诉我们:涉及多服务、模糊日志、需深度系统知识的故障,Agent 成功率会塌到 30% 以下。此时让它主动"交还控制权":

Agent 判断:
  本次涉及 6 个服务、日志不完整、无明确时间锚点
  置信度:低(<40%)
动作:标记为"需人工深度排查",
      附已收集的日志片段 + 初步假设,
      升级给值班 SRE,不再自行推断根因。
🎯 把"认怂"写进 Agent 逻辑,比让它硬编根因安全得多。复杂故障的"人味判断"短期无法替代。

Step 7:沉淀案例,越用越准

7 把每次复盘喂回知识库

故障解决后,把"现象→真因→解法"写进知识库,下次同类告警 Agent 直接命中:

复盘入库模板:
  触发特征:order-service 错误率突增 + pay 延迟
  真因:pay-service 发布后连接池未调大
  解法:发布 checklist 增加连接池校验
  → 存入 RAG 知识库,Agent 下次自动引用
🎉 跑顺后,常见故障的初筛+分析基本全自动,人只盯 P0 和复杂升级,Oncall 体验天差地别。

常见问题速查

现象大概率原因 & 解决
Agent 给的根因是编的提示词加固"不许编造",并要求引用具体日志行
误把真故障标成 P2初筛规则加"全集群/核心链路"强制 P0 白名单
复杂故障瞎指挥设置信度阈值,低于即升级人工
数据拉不到检查 MCP/脚本的鉴权与网络可达性
← 返回教程中心