主题
03. AI 值班 Agent 路线图
当前已建成"发现 → AI 诊断 → 通知"链路(见 01/02 篇)。 本篇规划下一步:从"诊断通知"演进到真正能值班的 Agent。原则不变:自动修复必须经人工确认。
阶段一:已完成 ✅
- K8sGPT 10 分钟巡检 + AI 中文诊断 + 飞书卡片通知
- Alertmanager 阈值告警 + 卡片通知(触发/恢复)
- 适配器管道:解析容错、兜底翻译、日志可查
阶段二:告警上下文聚合 ✅(2026-08-01 已落地)
痛点:一条告警来了,值班人还要手动 kubectl get/describe/events 收集现场。
已实现:alertmanager-feishu-adapter 收到 firing + critical 告警后,异步(不阻塞 webhook 响应) 用只读 RBAC 自动收集上下文(Pod phase/容器状态/最近 5 条 Warning 事件),连同告警内容发给 qwen-plus 生成初步分析,在告警卡片后补推一张「🤖 AI 值班初判」卡片(青绿头)。
实现要点:
- 适配器新增 SA + ClusterRole(只读 pods/nodes/events,不含 pods/log——日志原文待切内网模型后再开)
ThreadingHTTPServer+ 后台线程分析;同一告警 2h 冷却(AI_ANALYZE_COOLDOWN),失败不留冷却自动重试- 只对 critical 触发 AI 初判(
AI_ANALYZE_SEV可配),warning 仅告警卡片,成本可控 - Key 存 Secret
alertmanager-ai(deploy.sh 从 .secrets.env 创建),optional 引用——无 Key 自动降级为仅告警卡片 - 实测:合成 critical(真实 mysql/mysql-primary-0 对象)→ 双卡片推送成功;端到端走真实 Alertmanager 路由同样生效
阶段三:Runbook 半自动执行(中期)
方案:把高频处置固化成 Runbook(如"磁盘清理""Pod 重启""扩容"), AI 诊断命中 Runbook 时,卡片上挂飞书交互按钮(互动卡片支持 callback):
🛠 建议执行:重启 mysql-primary-0
[ ✅ 确认执行 ] [ ❌ 忽略 ] [ 📋 查看影响范围 ]- 点击「确认执行」→ callback 到执行器服务 → 校验白名单(只允许预定义动作 + 目标资源匹配)→ 执行 → 回执卡片更新结果
- 白名单外动作一律只出建议不出按钮
- 全部操作落审计日志(配合集群 apiserver 审计)
阶段四:值班 Agent 长期记忆(远期)
- 告警/处置历史入向量库,AI 初判时检索"上次同类问题怎么修的"
- 周报自动生成:本周告警分布、Top 问题、容量趋势、SLO 达成
技术选型备忘
| 项 | 候选 | 倾向 |
|---|---|---|
| AI 后端 | DashScope qwen-plus(现用)/ 内网 vLLM | 敏感阶段(含日志上下文)切内网 vLLM 更合适,需解决网段可达 |
| 上下文收集 | client-go controller / kubectl proxy | 适配器内嵌只读 client 即可 |
| 交互按钮 | 飞书互动卡片 callback | 需公网回调地址或飞书网关,ai-ear.cn 可承担 |
| 执行器 | 独立 Deployment + 白名单 | 不复用 K8sGPT autoRemediation(保持关闭) |
红线(任何阶段不放松)
- AI 无集群写权限;执行器白名单制,AI 输出只作为"建议选择"
- 送公网 API 的数据必须脱敏(anonymize);含日志原文的阶段切内网模型
- 每一次自动动作都有审计记录 + 通知回执