用 LLM 自动生成监控告警规则——可行吗?
想法来源
配置 Prometheus 告警规则有个痛点:语法不难,但写一个好的告警规则需要考虑很多——阈值、持续时间、标签、 annotations,还有表达式本身的正确性。
如果能用自然语言描述想要的告警,让 AI 自动生成 PromQL 表达式和完整的告警配置,会不会很爽?
实验设计
选定了 10 个常见的告警场景,用同样的模板让 Claude 生成:
- CPU 使用率过高
- 内存使用率过高
- 磁盘空间不足
- Pod 重启次数异常
- 5xx 错误率飙升
- 证书即将过期
- API 响应时间过长
- QPS 突降(可能的服务宕机)
- OOMKill 事件
- Deployment 副本数不匹配
结果
好的
对于简单的阈值类告警(CPU、内存、磁盘),AI 生成的规则几乎可以直接使用:
"CPU 超过 80% 持续 5 分钟"
→ avg(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance) > 0.8
PromQL 语法完全正确,for 字段设置合理,annotations 也有模板。
中等的
稍复杂的场景(5xx 错误率、响应时间),AI 生成的规则在大方向上正确,但需要微调:
- threshold 可能偏保守或偏激进
- 聚合维度可能需要调整(按 path 聚合 vs 按 service 聚合)
不好用的
复杂的场景(OOMKill、QPS 突降)生成的规则基本不可用。PromQL 本身表达不出 “突降” 这类概念,需要 recording rules + 更复杂的逻辑,超出了 AI 当前的能力范围。
结论
可用,但需要人工 review。 对于 80% 的常见告警场景,AI 可以省掉查文档写语法的时间。但关键参数(阈值、持续时间)还是得根据实际业务调整。
最有价值的不是让 AI 写告警规则,而是让 AI 帮你做 模板化——把重复的规则结构写好,你只需要填关键参数。