告警即代码是什么
告警即代码是指把告警规则与通知配置纳入版本库管理:改动走评审、合并前跑语法校验与规则单测、按环境发布并可回滚。它解决的问题是「界面上热改、没人知道谁改的、出问题回不去」。做法并不复杂——规则文件进仓库,CI 里加两步校验命令,就能把告警变更拉到和代码变更同等的纪律水平。
基本信息
| 校验工具 | promtool check rules、promtool test rules、amtool check-config |
|---|---|
| 发布方式 | 流水线按环境应用规则文件 |
| 版本纪律 | 变更留痕、可追溯、可回滚 |
| 配套要求 | 规则单测覆盖关键阈值与标签组合 |
典型使用场景
- 规则评审:新增或修改告警必须经过代码评审
- 上线门禁:流水线中校验语法与单测,未通过不允许合并
- 环境一致性:同一份规则发布到多个集群,避免手工配置漂移
- 快速回滚:新规则误报严重时回滚到上一版本
- 变更追溯:回答「这条规则什么时候改的、为什么改」
CI 校验片段
CI 校验片段
# 流水线中的校验步骤(示意)
validate-alerts:
script:
- promtool check rules rules/*.yml # 语法与表达式检查
- promtool test rules tests/*.yml # 规则单测:阈值与标签
- amtool check-config alertmanager/alertmanager.yml # 通知配置校验
# 规则单测可覆盖:告警何时触发、标签是否符合预期、注解是否正确渲染
# 发布顺序:先规则文件,再通知配置,最后观察一轮真实告警
# 注意:控制台热改的临时规则要回写仓库,否则线上与仓库逐渐不一致校验层次
| 层次 | 工具与动作 | 能发现的问题 |
|---|---|---|
| 语法 | promtool check rules | 表达式写错、结构不合法 |
| 语义 | promtool test rules | 阈值不合理、标签缺失 |
| 通知配置 | amtool check-config | 接收器引用错误、匹配器写法问题 |
| 发布 | 按环境应用与回滚 | 环境漂移与误报 |
| 事后 | 真实告警观察 | 噪声与覆盖缺口 |
告警变更与代码发布同纪律:谁改的、为什么改、何时生效都能追溯,出问题可回滚到上一版本,这在误报突然增多的场景里尤其重要。
单测是规则质量的护栏:给关键规则写几条测试用例覆盖「该触发」与「不该触发」,比只做语法校验有效得多。