用 LLM 自动生成监控告警规则——可行吗?

想法来源

配置 Prometheus 告警规则有个痛点:语法不难,但写一个好的告警规则需要考虑很多——阈值、持续时间、标签、 annotations,还有表达式本身的正确性。

如果能用自然语言描述想要的告警,让 AI 自动生成 PromQL 表达式和完整的告警配置,会不会很爽?

实验设计

选定了 10 个常见的告警场景,用同样的模板让 Claude 生成:

  1. CPU 使用率过高
  2. 内存使用率过高
  3. 磁盘空间不足
  4. Pod 重启次数异常
  5. 5xx 错误率飙升
  6. 证书即将过期
  7. API 响应时间过长
  8. QPS 突降(可能的服务宕机)
  9. OOMKill 事件
  10. 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 帮你做 模板化——把重复的规则结构写好,你只需要填关键参数。