本篇目录7 节

08告警与通知Alerting

静默与通知模板

静默让你按计划消音而不必停用规则,模板让你决定通知长什么样。本文覆盖从告警创建静默、匹配器写法、Go 模板语法与自定义 Slack 消息示例,附常见误配清单。

约 2 分钟/684 字/GRAFANA 12.X

静默(Silence)

静默是「在一段时间内,忽略匹配某组标签的告警通知」。它只拦截通知,规则的评估照常进行——这是它与「暂停规则」的本质区别:静默期间你仍然能在告警列表里看到 Firing 状态。

从告警直接创建

最顺手的路径:在 Alerting → Alerts 列表找到正在 firing 的告警,点 Silence,Grafana 会预填它的全部标签作为匹配器。改成你想要的范围(通常保留 alertnameinstance 两三个关键标签即可),设定开始与结束时间,填上注释(谁、为什么、关联工单号),保存。

匹配器的三种写法

  • =:精确相等。
  • !=:不等于。
  • =~:正则匹配,如 instance=~"web-.*",适合一次罩住一组机器。

注意: 静默匹配的是实例标签的完整子集要求——告警实例必须满足所有匹配器才会被静默。少写一个 instance 就静默了整条规则,多写一个就一个都没静默,两种事故都常见。

批量场景也可以反向操作:在 Silences 页手工新建,或从已发送的通知消息里的链接一键静默(Slack、邮件模板默认带此链接,取决于通知渠道是否支持)。

通知模板(Go template)

各渠道的通知文案由 Go text/template 渲染。你不一定要重写模板——多数联系点的 Custom message 区域只暴露 TitleText/Message 几个字段,在其中引用变量就够日常使用。

常用变量速查:

变量 内容
{{ .Status }} firingresolved
{{ .CommonLabels.alertname }} 组内共同的规则名
{{ .GroupLabels.team }} 分组标签值
{{ range .Alerts }}...{{ end }} 遍历组内每条告警
{{ .Annotations.summary }} 单条告警的注解

自定义 Slack 消息示例

在 Slack 联系点的 Custom message 中启用 Message template 后写入:

{{ if eq .Status "firing" }}:rotating_light:{{ else }}:white_check_mark:{{ end }}
**{{ .CommonLabels.alertname }}**{{ .Status }}
{{ range .Alerts }}
- `{{ .Labels.instance }}`{{ .Annotations.description }}
  [查看曲线]({{ .GeneratorURL }}) · [静默 1 小时]({{ .SilenceURL }})
{{ end }}

GeneratorURL 会直达触发告警的面板视图,SilenceURL 一键打开预填好匹配器的静默创建页——值班体验的关键往往就是这两个链接。

提示: 整段自定义模板适合用 Provisioning 的 templates 字段挂 .tmpl 文件管理,改模板走 Git 评审;UI 内改适合临时救火。

常见误配

  • 静默永不结束:创建时勾了类似「不设结束时间」的选项,告警被无限期消音。定期在 Silences 页按创建人筛一遍。
  • 时区错位:静默的起止时间按浏览器时区录入、按实例时区展示,跨时区团队约定用 UTC 或规则名里写死。
  • 模板变量名拼错:Go 模板渲染失败时通常回退默认文案或直接发空,先点联系点的 Test 验证。
  • 以为静默会暂停告警:见上文,静默只挡通知,状态机照跑。

下一步

本页为学习整理的中文改写,依据Grafana 官方文档最新版本编写(以 Grafana 12.x 为基准),操作路径请以实际产品界面为准。

Alerting