使用 AI 和 MCP 协议自动化 DevOps 告警分析
DevOps 团队常常花费数小时在 Slack、Grafana 和 Alertmanager 的告警中刨根问底,尤其是在 Kubernetes、VictoriaMetrics、Loki 和多云环境的复杂架构中。手动排查需要脑子里记住 10+ 个环境、数据库和监控栈的细节。解决方案?基于 n8n 构建的 POC 智能代理,通过 MCP 服务器(模型控制协议)集成 AI,提供完整的告警上下文、即执行命令和实用建议。
该代理仅获得基础设施的只读访问权限:vmetrics 用于 PromQL 查询、Loki 用于日志、k8s-mcp 用于 Kubernetes 资源、Yandex Cloud Toolkit、ArgoCD-mcp 和 Alertmanager-mcp。这样它就能分析指标、日志、Pod 状态和静默规则,而不会造成任何变更风险。
在 n8n 上构建 POC 并集成 MCP
我们选择 n8n 作为低代码工作流平台来开发原型。我们启动了 MCP 服务器:alertmanager-mcp、vmetrics-mcp、Yandex Toolkit 和 k8s-mcp。AI 会根据你的环境(Yandex Cloud、AWS、DigitalOcean)生成定制工作流。
早期用 Gemini 测试时遇到问题:静默规则识别错误、MCP 调用过多。切换到 Claude 并启用逐步思考模式后,解决了幻觉和循环问题。最终提示词指定了环境、日期、工具和严格的操作序列。
关键提示词元素:
- 当前环境,包括 cloud_id、folder_id、集群标签。
- 工具:vmetrics(即时/范围查询,从 -30m 到 now)、Loki(-30m/-1h)、k8s_mcp(表格上下文)、Yandex Cloud Toolkit(仅 Compute/VPC/IAM/YDB/S3)。
- Alertmanager:get_silences、post_silence(JSON 格式,包含 matchers 和 ISO 日期)、delete_silence。
标准告警调查协议
代理遵循标准 playbook:
- vmetrics — 检查指标(重启、内存、CPU、空闲服务器)。
- 数据表 — kubeconfig_context 用于 K8s。
- k8s_mcp — pods_log(previous=true)或 pods_get。
- argocd_mcp — 通过标签 get_application。
- Loki — 仅在 Pod 日志无根因时使用。
调用限制:
- 每个工具最多 2 次重试。
- 两次空响应?停止。
- 422 错误(数据点过多)?切换到即时查询。
- 停止条件:日志中 OOMKilled/Killed/Error、重启 >0 并有原因、调用 5+ 次。
告警标签(labelsRaw)严格按提供使用:仅在存在时使用 project/cluster,不做假设。
处理命令和静默规则
@bot 命令支持英文或俄文:
- "silence 2h" / "mute for 4 hours" — post_silence(默认 2h,按 alertname 匹配)。
- "unsilence" / "unmute" — 按 alertname delete_silences。
- "reanalyze" — 完整重新分析。
静默规则流程:
- get_silences() — 检查现有规则。
- 若存在 — 报告 ID/endsAt。
- 若不存在 — post_silence(startsAt=now,endsAt=+duration,ISO Z 格式)。
Slack mrkdwn 响应格式:
- 严重度:🔴/🟡/🟢(按标签,绝不降级)。
- _诊断:_ 根因。
- _发现:_ 数字(重启 | exitCode | 限额 | 日志)。
- _下一步:_ 编号行动列表。
关键收获
- MCP 协议让 AI 安全获取基础设施只读访问,无需自定义 API。
- Claude 的思考模式避免工具调用循环和幻觉。
- 严格停止条件最小化调用,直击根因(OOM、CrashLoopBackOff)。
- n8n 集成让 AI 生成工作流,加速开发。
- 通过上下文映射支持多云和 K8s 集群。
— Editorial Team
暂无评论。