Grafana-Alerting 告警配置实战
Grafana Alerting 告警配置实战
一、Grafana Alerting 概述
1.1 版本差异
| 特性 | Grafana 8.x 之前 | Grafana 8.x 及之后 |
|---|---|---|
| 告警引擎 | 基于 Panel 的旧告警 | 统一告警 (Unified Alerting) |
| 规则存储 | Dashboard JSON 内 | 独立告警规则 |
| 表达式 | 简单阈值 | 支持 PromQL/多数据源 |
| 通知策略 | 简单通知渠道 | 复杂路由和分组 |
| 推荐度 | ❌ 已弃用 | ✅ 推荐使用 |
1.2 核心概念
1 | 告警规则 (Alert Rule) |
二、告警规则配置
2.1 创建告警规则
步骤 1:进入告警页面
1 | Grafana UI → Alerting → Alert rules → New alert rule |
步骤 2:配置查询
1 | # 示例 1:CPU 使用率 |
步骤 3:配置表达式
1 | Query: A (上述查询) |
步骤 4:配置评估规则
1 | Folder: 基础设施监控 |
2.2 告警规则 YAML 配置
1 | # alert_rules.yaml |
2.3 使用 Terraform 管理告警规则
1 | # main.tf |
三、通知渠道配置
3.1 配置通知渠道
邮件通知
1 | # 在 Grafana UI 中配置 |
Slack 通知
1 | Name: Slack 通知 |
Webhook 通知
1 | Name: 自定义 Webhook |
钉钉通知
1 | Name: 钉钉通知 |
企业微信通知
1 | Name: 企业微信通知 |
3.2 通知策略配置
1 | # 通知策略路由 |
3.3 告警抑制配置
1 | # 抑制规则 |
四、告警模板配置
4.1 自定义告警模板
1 | # 告警标题模板 |
4.2 在通知策略中使用模板
1 | # 通知策略配置 |
五、告警管理最佳实践
5.1 告警分级标准
| 级别 | 定义 | 响应时间 | 通知渠道 |
|---|---|---|---|
| Critical | 服务不可用,影响用户 | 5 分钟内 | 电话 + Slack + 邮件 |
| Warning | 服务降级,可能影响用户 | 30 分钟内 | Slack + 邮件 |
| Info | 需要注意但不紧急 | 24 小时内 | 邮件 |
5.2 告警规则设计原则
1 | # ✅ 好的告警规则 |
5.3 告警去重和聚合
1 | # 使用 Group By 进行告警聚合 |
5.4 告警维护模式
1 | # 使用 Mute Timing 设置维护窗口 |
六、监控和测试
6.1 告警健康检查
1 | # 检查告警规则评估状态 |
6.2 告警测试
1 | # 使用 curl 测试 Webhook |
6.3 告警审计
1 | -- Grafana 数据库中的告警历史 |
七、常见问题排查
7.1 告警不触发
1 | # 检查数据源连接 |
7.2 告警通知不发送
1 | # 检查通知渠道配置 |
7.3 告警风暴
1 | # 增加 Group Wait 和 Group Interval |
八、总结
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Evaluation Interval | 1m | 评估间隔 |
| Pending Period | 5m | 持续时间阈值 |
| Group Wait | 30s-2m | 告警等待时间 |
| Group Interval | 5m-10m | 告警分组间隔 |
| Repeat Interval | 4h-12h | 重复通知间隔 |
关键要点:
- 合理分级:Critical/Warning/Info 分级明确
- 避免风暴:使用聚合、抑制、去重
- 可操作:每条告警都有 Runbook
- 可测试:定期测试通知渠道
- 可维护:使用 Terraform 管理配置
参考文档:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 体系所运维知识库!