模板
使用模板化来自定义、格式化和重用告警通知消息。通过引入动态内容,例如指标值、标签和其他上下文信息,创建更灵活、信息更丰富的告警通知消息。
在 Grafana 中,您有多种选项可以模板化您的告警通知消息
- 注释为告警实例添加额外信息(例如
summary
和description
),用于通知消息。 - 模板化注释以显示对告警有意义的查询值,例如服务器名称或阈值查询值。
- 注释为告警实例添加额外信息(例如
- 标签用于区分一个告警实例与所有其他告警实例。
- 模板化标签可以基于查询值添加额外的标签,或者在查询中的标签不完整或不够描述性时使用。
- 避免在标签中显示查询值,因为这会创建大量告警实例——请改用注释。
- 通知模板由联系点用于在通知标题和描述中保持一致的消息传递。
- 当您想要自定义通知的外观和信息时,可以模板化通知。
- 避免使用通知模板向告警实例添加额外信息——请改用注释。
提示
有关模板化的实际示例,请参阅我们的模板化入门教程。
此图演示了整个模板化过程,从查询标签和模板化告警摘要及通知,到最终的告警通知消息。

在此图中
- 告警规则查询返回
12345
,以及instance
和job
标签的值。 - 此查询结果违反了告警规则条件,触发了告警实例。
- 告警实例生成一个注释摘要,该摘要由告警规则摘要中使用的模板定义。在此示例中,它显示了
instance
标签的值:server1
。 - Alertmanager 接收触发的告警实例(包括最终注释摘要),并确定将处理此告警的联系点。
- Alertmanager 使用联系点的通知模板格式化消息,然后将通知发送到配置的目标(即电子邮件地址)。
模板化注释
注释可以在告警规则中定义,以向告警实例添加额外信息。
创建告警规则时,Grafana 会建议一些可选注释,例如 description
、summary
和 runbook_url
,这些注释有助于识别和响应告警。您还可以创建自定义注释。
注释是键值对,其值可以包含文本和模板代码的组合,这些内容在告警触发时进行评估。
注释可以包含纯文本,但如果您需要显示与告警相关的查询值,则应该模板化注释,例如
- 显示触发告警的查询值。
- 包含查询返回的用于识别告警的标签。
- 根据查询值格式化注释消息。
以下是模板化注释的示例,它解释了告警在何处以及为何触发。在此示例中,当 CPU 使用率超过阈值时触发告警,并且 summary
注释提供了相关详细信息。
CPU usage for {{ $labels.instance }} has exceeded 80% ({{ $values.A.Value }}) for the last 5 minutes.
此模板的结果将是
CPU usage for Instance 1 has exceeded 80% (81.2345) for the last 5 minutes.
实现提供有意义信息以响应告警的注释。注释显示在 Grafana 告警详情视图中,并默认包含在通知中。
有关如何模板化注释的更多详细信息,请参阅模板化注释和标签。
模板化标签
标签用于区分一个告警实例与所有其他告警实例,因为标签集唯一地标识一个告警实例。通知策略和静默使用标签来处理告警实例。
您还可以根据查询结果模板化标签。如果从查询中获取的标签不够详细,这将非常有用。例如
- 添加新标签以更改告警的识别方式和分组方式。
- 添加由通知策略或静默使用的新标签,以管理告警的处理方式。
以下是根据查询标签的值模板化新 env
标签的示例
{{- if eq $labels.instance "prod-server-1" -}}
production
{{- else if eq $labels.instance "staging-server-1" -}}
staging
{{- else -}}
development
{{- end -}}
有关如何模板化标签的更多详细信息,请参阅模板化注释和标签。
模板化通知
通知模板允许您自定义通知内容,例如电子邮件的主题或 Slack 消息的正文。
通知模板在以下方面与模板化注释和标签不同
- 通知模板是分配给联系点,而不是告警规则。
- 如果未指定,联系点会使用包含相关告警信息的默认模板。
- 同一个模板可以在多个联系点之间共享,这使得维护更容易并确保一致性。
- 通知模板不应用于向单个告警添加额外信息——请为此目的使用注释。
- 虽然注释/标签模板和通知模板都使用相同的模板语言,但可用的变量和函数有所不同。有关更多详细信息,请参阅通知模板参考和注释/标签模板参考。
以下是一个通知模板示例,它总结了通知组中所有触发和已解决的告警
{{ define "alerts.message" -}}
{{ if .Alerts.Firing -}}
{{ len .Alerts.Firing }} firing alert(s)
{{ template "alerts.summarize" .Alerts.Firing }}
{{- end }}
{{- if .Alerts.Resolved -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ template "alerts.summarize" .Alerts.Resolved }}
{{- end }}
{{- end }}
{{ define "alerts.summarize" -}}
{{ range . -}}
- {{ index .Annotations "summary" }}
{{ end }}
{{ end }}
发送到联系点的通知消息将如下所示
1 firing alert(s)
- The database server db1 has exceeded 75% of available disk space. Disk space used is 76%, please resize the disk size within the next 24 hours.
1 resolved alert(s)
- The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
有关更多详细信息,请参阅模板化通知。