乐于分享
好东西不私藏

AIOps探索:我用OpenCode做了一个智能运维助手,效率飞起

AIOps探索:我用OpenCode做了一个智能运维助手,效率飞起
↑↑↑ 点击关注,分享IT技术|职场晋升技巧|AI工具

研究AIOps已有大半年,目前手里有不少可落地的方案了,接下来会把这些方案全部整理到我的大模型课程里。

作为一个运维,我最不愿意干的事情莫过于从一个复杂的业务系统里找故障根因。虽然说老运维通过经验就可以判断出问题大概出在哪里,但是当你发现每次出现的问题都不一样时,你就会非常痛苦!尤其是,大半年被告警吵醒,然后修复问题。

我想说的是,现在有了AI之后,这个排障的效率是可以大大提升的。今天这篇文章跟大家说一说,我是如何借助OpenCode做问题排障的。

01 | 思路

首先我对这个运维助手的定位很明确:它不是自动运维机器人,它也不是一个万能ChatBot,它更像一个懂代码、懂配置、懂日志、懂Kubernetes的值班副驾。

我希望它能做四件事:

1)帮我快速收集现场

比如线上服务出现 502,它可以自动帮我查:

  • Deployment 状态;

  • Pod 状态;

  • Service 和 Endpoints;

  • Ingress 配置;

  • Kubernetes Events;

  • 最近日志;

  • Prometheus 指标;

  • 最近一次发布变更。

以前这些动作需要我在多个系统之间来回切换,现在可以交给助手统一整理。

2)帮我形成证据链

运维排障最怕“感觉是这个问题”。我希望助手的每个判断都必须有证据,比如:

  • 哪个指标异常;

  • 哪个 Pod 不 Ready;

  • 哪条日志显示健康检查失败;

  • 哪个配置和实际应用行为不一致;

  • 哪次发布之后问题开始出现。

没有证据,就不能下结论。

3)帮我生成问题解决方案

如果问题来自配置,比如 readinessProbe 写错、资源限制不合理、Ingress 配置遗漏,那么助手可以直接在 Git 仓库里生成 YAML 补丁。

但它不能直接改生产,它只能生成:

  • Git diff;

  • 修复建议;

  • 验证命令;

  • 回滚方案。

最终发布必须经过人或 CI/CD 审批。

4)帮我沉淀 Runbook

每次排障结束后,助手还能把过程整理成 Runbook:

  • 现象;

  • 影响范围;

  • 根因;

  • 排查步骤;

  • 修复方式;

  • 预防措施。

这样下一次遇到类似问题,新人也能照着处理。

02 | 整体架构

第一层:opencode 作为智能入口

Opencode 本身是一个 AI coding agent,擅长读代码、改代码、理解项目上下文。而我并没有把它只当成“写代码工具”,而是把它变成一个运维分析入口。

值班人员只需要输入一句话,比如:

生产环境 order-api 出现 502 告警,请帮我排查。

要求只读查询生产环境,不要执行重启、删除、扩缩容、发布等操作。

然后 opencode 会根据项目规则去调用工具、读取配置、分析日志和指标。

第二层:AGENTS.md 定义行为边界

我在项目里放了一个AGENTS.md,我用它来告诉助手:你是谁,能做什么,不能做什么。核心规则大概是这样:

你是 SRE 运维助手,目标是帮助值班人员完成排障、变更前检查和修复补丁生成。重要原则:1. 默认先诊断,不直接执行生产变更。2. 对 Kubernetes 生产环境只允许读操作。3. 禁止自动执行 delete、scale、restart、helm upgrade、terraform apply 等高风险命令。4. 所有修复必须优先生成 Git 补丁或 PR 建议。5. 输出必须包含现象、影响范围、证据、根因假设、推荐修复、回滚方案和验证命令。6. 证据不足时,必须明确说明不能确认。

这一步很关键。因为做运维助手,最重要的不是“让 AI 更聪明”,而是先让 AI 守规矩。

第三层:权限配置限制高风险操作

我给 opencode 配了严格权限。

大体原则是:

  • 允许读仓库文件;

  • 允许执行安全查询;

  • 修改配置文件需要在指定目录内;

  • 高风险生产命令全部禁止;

  • 不确定的命令必须人工确认。

例如:

{  "permission": {    "*": "ask",    "read": {      "*": "allow",      "*.env": "deny",      "*.pem": "deny",      "*kubeconfig*": "deny"    },    "edit": {      "manifests/**": "allow",      "runbooks/**": "allow"    },    "bash": {      "git status*": "allow",      "git diff*": "allow",      "kubectl get *": "allow",      "kubectl describe *": "ask",      "kubectl logs *": "ask",      "kubectl delete *": "deny",      "kubectl scale *": "deny",      "kubectl rollout restart *": "deny",      "helm upgrade *": "deny",      "terraform apply *": "deny"    }  }}

这相当于给助手套了一个“安全笼子”。它可以看,可以分析,可以写补丁,但不能擅自操作生产环境。

第四层:自定义工具连接运维系统

最后,我封装了一些只读工具,让助手可以查询外部系统:

  • Kubernetes工具:查Deployment、Pod、Service、Endpoints、Events;

  • Prometheus工具:查5xx、延迟、可用副本数;

  • Loki工具:查最近日志;

  • Git工具:对比变更;

  • Runbook工具:生成事故记录。

其中Kubernetes工具只允许白名单命令,比如:

kubectl getkubectl describekubectl logs

禁止:

kubectl deletekubectl scalekubectl rollout restartkubectl apply
这样既能让 AI 看到现场,又不会让它越权操作。

03 | 从一个小场景开始落地 

我没有一开始就做一个“大而全”的 AIOps 平台。而是从一个非常具体的问题开始,比如从这个问题开始:order-api 出现 502 时,助手能不能帮我完成一次完整排障?落地过程分了四步。

第一步:先整理标准排障路径

我先把人工排障流程写下来。比如 502 问题,通常会看:

kubectl -n prod-order get deploy order-apikubectl -n prod-order get pod -l app=order-apikubectl -n prod-order get svc order-apikubectl -n prod-order get endpoints order-apikubectl -n prod-order get ingresskubectl -n prod-order get events --sort-by=.lastTimestamp
再结合监控:
order-api 5xx rateorder-api p95 latencyorder-api available replicas

再结合日志:

最近 30 分钟 error 日志readiness probe 相关日志health check 相关日志

这一步的重点是:先把人的经验变成清晰流程,再让助手去执行。

第二步:把流程写进 Runbook

我给每类故障写了一个Runbook。例如:

runbooks/order-api-502.md
里面包括:
  • 常见原因;

  • 检查顺序;

  • 关键命令;

  • 判断标准;

  • 修复建议;

  • 回滚方式。

这样助手不是凭空猜,而是基于团队已有经验进行分析。

第三步:限制助手只能做低风险动作

这是整个方案能不能上线的关键。我给它定了一个原则:生产环境只读,修复进入Git。

也就是说,助手发现问题后,不能直接执行:

kubectl applyhelm upgradekubectl rollout restart
它只能修改仓库中的配置文件,然后给出:
git diffkubectl diff验证命令回滚命令

而真正上线由人来决定。

第四步:让它输出固定格式

为了避免助手输出一堆散乱分析,我要求它每次排障都按这个结构输出:

1. 现象2. 影响范围3. 已收集证据4. 根因假设5. 推荐修复6. 风险评估7. 验证命令8. 回滚方案9. 后续预防措施

这样每次排障结果都可以直接贴进事故群、工单或者复盘文档。


我的运维大模型课上线了,目前还有很大优惠。扫码咨询优惠(粉丝优惠力度大)

加好友送你100道大模型/AIOps面试题
··············  END  ··············
哈喽,我是阿铭,《跟阿铭学Linux》作者,曾就职于腾讯,有着19年的IT从业经验,现全职做IT类职业培训:运维、k8s、大模型。日常分享运维、AI、大模型相关技术以及职场相关,欢迎围观。

相关学习资料