Grafana 告警规则是什么
Grafana 告警规则由三部分组成:数据源查询(可多条查询并用表达式组合)、归约与阈值条件(Reduce 把多序列压成单值,Threshold 做比较)、以及时序参数(评估间隔与待触发期)。此外还必须显式配置「无数据」与「执行错误」的处理方式,否则数据源中断这类最危险的故障反而不会产生任何通知。规则的命名与文件夹归类也应按看板的组织方式来安排。
基本信息
| 适用版本 | Grafana 8+ |
|---|---|
| 规则结构 | Query → Reduce → Threshold → 评估参数 |
| 关键参数 | Evaluate every、Pending period、No Data、Error |
| 数据窗口 | 查询区间长度要与评估间隔匹配 |
| 权限要求 | 目标文件夹的告警规则创建权限 |
典型使用场景
- 接口错误率:查询近 5 分钟错误率,归约后与阈值比较
- 延迟毛刺:用较短的评估间隔捕获瞬时延迟跃升
- 指标断流:把无数据配置成告警,及时发现指标不再上报
- 多源统一:PromQL、LogQL 与 SQL 数据源共用同一套规则与通知策略
- 看板即规则:从图表直接创建规则,条件与图形口径天然一致
配置要点
- 评估间隔与数据窗口要匹配,窗口远大于间隔会重复看同一段数据
- 待触发期不要设为 0,一次数据抖动会立即变成值班打扰
- 无数据与执行错误必须显式指定,否则数据源故障时可能保持静默
- Reduce 统计量要与业务语义一致,捕获峰值就用最大值
- 规则命名与文件夹归类跟看板保持一致,便于查找与评审
规则结构
规则结构
Query A: sum(rate(http_errors_total[5m])) / sum(rate(http_requests_total[5m]))
Reduce B: last() <- 多序列归约成单值
Threshold C: > 0.05 <- 触发条件
Evaluate every: 1m Pending period: 5m
No Data: NoData Error: Error <- 异常状态处理
# 命名建议:业务 - 对象 - 现象,例如 order-svc 错误率偏高参数读法
| 参数 | 作用 | 建议 |
|---|---|---|
| Evaluate every | 评估间隔 | 与数据窗口匹配,不宜过密 |
| Pending period | 待触发期 | 大于一次抓取超时的量级 |
| No Data | 无数据处理 | 关键业务指标应设为告警 |
| Error | 执行错误处理 | 设为告警并带上规则名,便于定位 |
| Reduce | 归约方式 | 按业务语义选最大值或平均值 |
评估间隔与数据窗口要匹配:窗口远大于间隔会重复评估同一段数据、放大噪声,窗口远小于间隔则可能漏掉中间发生的变化。