本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建通知模板
本文档主题专为支持 Grafana 10.x 版本的 Grafana 工作区而设计。
对于支持 Grafana 9.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 9。
对于支持 Grafana 8.x 版本的 Grafana 工作区,请参阅 使用 Grafana 版本 8。
创建可重用的通知模板发送给联系点。
您可以向通知模板添加一个或多个模板。
通知模板名称必须唯一。同一通知模板或不同通知模板中不能有两个同名的模板。避免定义与默认模板同名的模板,例如:__subject
、__text_values_list
、__text_alert_list
、default.title
和 default.message
。
在“联系点”选项卡中,您可以看到通知模板的列表。
创建通知模板
创建通知模板
-
选择警报、联系点。
-
选择通知模板选项卡,然后选择 + 添加通知模板。
-
选择通知模板的名称,例如
email.subject
。 -
在内容字段中写入模板的内容。
例如:
{{ if .Alerts.Firing -}} {{ len .Alerts.Firing }} firing alerts {{ end }} {{ if .Alerts.Resolved -}} {{ len .Alerts.Resolved }} resolved alerts {{ end }}
-
保存您的更改。
{{ define "email.subject" }}
(其中email.subject
是模板名称),{{ end }}
自动添加到内容的开头和结尾。
创建包含多个模板的通知模板
-
选择警报、联系点。
-
选择通知模板选项卡,然后选择 + 添加通知模板。
-
输入整个通知模板的名称。例如,
email
。 -
在内容字段中写入每个模板,包括每个模板开头和结尾的
{{ define "
和name-of-template
" }}{{ end }}
。您可以为通知模板中的每个模板使用描述性名称,例如,email.subject
或email.message
。在这种情况下,不要重复使用您在上面输入的通知模板的名称。后面的部分展示了您可能创建的模板的详细示例。
-
单击保存。
预览通知模板
在联系点中使用通知模板之前,先预览通知模板的外观,这有助于您了解创建的模板效果,并允许在保存模板之前修复任何错误。
注意
通知预览仅适用于 Grafana Alertmanager。
预览通知模板
-
选择警报、联系点。
-
选择通知模板选项卡,然后选择 + 添加通知模板,或添加现有模板。
-
添加或更新模板内容。
提供了默认数据,您可以向其中添加或编辑警报数据以及警报实例。您可以直接在有效载荷数据窗口中添加警报数据,或者单击选择警报实例或添加自定义警报。
-
[可选] 要从现有警报实例中添加警报数据,请执行以下操作:
-
选择选择警报实例。
-
将鼠标悬停在警报实例上,可查看有关每个警报实例的更多信息。
-
选择确认将警报实例添加到有效载荷。
-
-
[可选] 要使用警报数据编辑器添加警报数据,请选择添加自定义数据:
-
添加注释、自定义标签或设置控制面板或面板。
-
切换“触发”或“已解决”,具体取决于您要在通知中添加触发警报还是已解决警报。
-
选择添加警报数据。
-
选择刷新预览,查看模板内容的外观以及相应的有效载荷数据。
如果模板中存在任何错误,这些错误会显示在预览中,您可以在保存之前进行更正。
-
-
保存您的更改。
为消息主题创建模板
为电子邮件主题创建模板,其中包含触发和已解决的警报数量,如以下示例所示:
1 firing alerts, 0 resolved alerts
为电子邮件主题创建模板
-
使用以下内容创建一个名为
email.subject
的模板:{{ define "email.subject" }} {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts {{ end }}
-
创建联系点集成时,请使用模板将其放入带有
template
关键字的主题字段中。{{ template "email.subject" . }}
为电子邮件消息创建模板
为电子邮件消息创建模板,其中包含所有触发和已解决的警报数量,如以下示例所示:
There are 2 firing alerts, and 1 resolved alerts Firing alerts: - alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1 - alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2 Resolved alerts: - alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
为电子邮件消息创建模板
-
创建一个名为
email
的通知模板,内容中包含两个模板:email.message_alert
和email.message
。email.message_alert
模板用于打印每个触发和已解决警报的标签和值,而email.message
模板包含电子邮件的结构。{{- define "email.message_alert" -}} {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s) {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }} {{- end -}} {{ define "email.message" }} There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts {{ if .Alerts.Firing -}} Firing alerts: {{- range .Alerts.Firing }} - {{ template "email.message_alert" . }} {{- end }} {{- end }} {{ if .Alerts.Resolved -}} Resolved alerts: {{- range .Alerts.Resolved }} - {{ template "email.message_alert" . }} {{- end }} {{- end }} {{ end }}
-
创建联系点集成时,请使用模板将其放入带有
template
关键字的正文字段中。{{ template "email.message" . }}
为 Slack 消息标题创建模板
为 Slack 消息标题创建模板,其中包含触发和已解决的警报数量,如以下示例所示:
1 firing alerts, 0 resolved alerts
为 Slack 消息标题创建模板
-
使用以下内容创建一个名为
slack.title
的模板:{{ define "slack.title" }} {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts {{ end }}
-
从联系点集成中的标题字段执行模板。
{{ template "slack.title" . }}
为 Slack 消息内容创建模板
为 Slack 消息内容创建模板,其中包含所有触发和已解决警报的描述,包括其标签、注释和控制面板 URL。
注意
此模板仅适用于 Grafana 管理的警报。要将模板用于数据来源管理的警报,请删除对 DashboardURL 和 SilenceURL 的引用。有关配置 Prometheus 通知的更多信息,请参阅 Prometheus 通知文档
1 firing alerts: [firing] Test1 Labels: - alertname: Test1 - grafana_folder: GrafanaCloud Annotations: - description: This is a test alert Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1 1 resolved alerts: [firing] Test2 Labels: - alertname: Test2 - grafana_folder: GrafanaCloud Annotations: - description: This is another test alert Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
为 Slack 消息内容创建模板
-
创建一个名为
slack
的模板,内容中包含两个模板:slack.print_alert
和slack.message
。slack.print_alert
模板用于打印标签、注释和 DashboardURL,而slack.message
模板包含通知的结构。{{ define "slack.print_alert" -}} [{{.Status}}] {{ .Labels.alertname }} Labels: {{ range .Labels.SortedPairs -}} - {{ .Name }}: {{ .Value }} {{ end -}} {{ if .Annotations -}} Annotations: {{ range .Annotations.SortedPairs -}} - {{ .Name }}: {{ .Value }} {{ end -}} {{ end -}} {{ if .DashboardURL -}} Go to dashboard: {{ .DashboardURL }} {{- end }} {{- end }} {{ define "slack.message" -}} {{ if .Alerts.Firing -}} {{ len .Alerts.Firing }} firing alerts: {{ range .Alerts.Firing }} {{ template "slack.print_alert" . }} {{ end -}} {{ end }} {{ if .Alerts.Resolved -}} {{ len .Alerts.Resolved }} resolved alerts: {{ range .Alerts.Resolved }} {{ template "slack.print_alert" .}} {{ end -}} {{ end }} {{- end }}
-
从联系点集成中的文本正文字段执行模板:
{{ template "slack.message" . }}
使用共享模板对电子邮件和 Slack 进行模板化
您可以共享同一个模板,而不是为每个联系点创建单独的通知模板,例如电子邮件和 Slack。
例如,如果要发送包含此主题的电子邮件和包含标题 1 firing alerts, 0 resolved
alerts
的 Slack 消息,则可以创建共享模板。
创建共享模板
-
使用以下内容创建一个名为
common.subject_title
的模板:{{ define "common.subject_title" }} {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts {{ end }}
-
对于电子邮件,请从电子邮件联系点集成中的主题字段运行模板:
{{ template "common.subject_title" . }}
-
对于 Slack,请从 Slack 联系点集成中的标题字段运行模板:
{{ template "common.subject_title" . }}