菜单
Grafana Cloud 企业版 开源版

创建通知模板

创建可重用的通知模板以发送到您的联系人。

您可以在通知模板中添加一个或多个模板。

您的通知模板名称必须唯一。您不能在同一个通知模板中或不同的通知模板中拥有两个名称相同的模板。避免定义与默认模板名称相同的模板,例如:__subject__text_values_list__text_alert_listdefault.titledefault.message

要创建通知模板,请完成以下步骤。

  1. 点击警报和 IRM -> 联系人

  2. 点击通知模板选项卡,然后点击+ 添加通知模板

  3. 输入通知模板的名称。

  4. 在内容字段中编写模板的内容。

  5. 保存您的更改。

{{ define "email.subject" }}{{ end }} 会自动添加到内容的开头和结尾

要创建包含多个模板的通知模板

  1. 点击+ 添加通知模板

  2. 输入通知模板的名称。

  3. 在“内容”字段中编写每个模板,包括每个模板开头和结尾的{{ define "name-of-template" }}{{ end }}

  4. 保存您的更改。

预览通知模板

在将通知模板用于您的联系人之前预览通知模板的外观,这有助于您了解正在创建的模板的结果,以及在保存之前修复任何错误。

注意:此功能仅适用于 Grafana Alertmanager。

要预览您的通知模板

  1. 导航到警报和 IRM -> 警报 -> 联系人 -> 通知模板

  2. 点击+ 添加通知模板或编辑现有模板。

  3. 添加或更新您的模板内容。

    提供默认数据,您还可以向其中添加或编辑警报数据以及警报实例。您可以直接在“有效负载数据”窗口中添加警报数据,也可以点击选择警报实例添加自定义警报

  4. 可选:要从现有警报实例中添加警报数据

    a. 点击选择警报实例

    b. 将鼠标悬停在警报实例上以查看每个警报实例的更多信息。

    c. 点击确认将警报实例添加到有效负载中。

  5. 可选:要使用警报数据编辑器添加警报数据,请点击添加自定义数据:

    a. 添加注释、自定义标签和/或设置仪表盘或面板。

    b. 根据您是要将触发警报还是已解决警报添加到通知中,切换触发/已解决。

    c. 点击添加警报数据

    d. 点击刷新预览以查看模板内容的外观以及相应的有效负载数据。

    如果您的模板中存在任何错误,它们将显示在预览中,您可以在保存之前更正它们。

  6. 保存您的更改。

模板化电子邮件主题

模板化电子邮件主题以包含触发和已解决警报的数量

1 firing alert(s), 0 resolved alerts(s)
  1. 创建一个名为email.subject 的模板,内容如下

    {{ define "email.subject" }}
    {{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
    {{ end }}
  2. 从联系人点集成中的主题字段执行模板

    {{ template "email.subject" . }}

模板化电子邮件正文

模板化电子邮件正文以包含所有触发和已解决警报的摘要

There are 2 firing alert(s), and 1 resolved alert(s)

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
  1. 创建一个名为email 的通知模板,在内容中包含两个模板:email.message_alertemail.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 alert(s), and {{ len .Alerts.Resolved }} resolved alert(s)
    
    {{ 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 }}
  2. 从联系人点集成中的消息字段执行模板

    {{ template "email.message" . }}

将多个警报实例分组到一个电子邮件通知中

为了使警报更简洁,您可以将触发警报的多个实例分组到以表格格式显示的单个电子邮件通知中。这样,您可以避免冗长、重复的电子邮件,并使警报更易于理解。

按照以下步骤创建自定义通知模板,将警报实例整合到表格中。

1.修改警报规则,包含一个稍后在通知模板中引用的注释。

  1. 输入**自定义注释**的名称:在本例中为*ServerInfo*。

  2. 输入以下代码作为注释的值。它会检索服务器的实例名称和相应的指标值,并将其格式化为表格行。

    {{ index $labels "instance" }}{{- "\t" -}}{{ index $values "A"}}{{- "\n" -}}

    此代码行以表格的形式返回标签及其值。假设$labels包含{"instance": "node1"},而$values包含{"A": "123"},则输出将为

    node1    123
  3. 创建一个引用*ServerInfo*注释的通知模板。

    前往
    {{ define "Table" }}
    {{- "\nHost\t\tValue\n" -}}
    {{ range .Alerts -}}
    {{ range .Annotations.SortedPairs -}}
    {{ if (eq .Name  "ServerInfo") -}}
    {{ .Value -}}
    {{- end }}
    {{- end }}
    {{- end }}
    {{ end }}

    通知模板会为每个警报输出“ServerInfo”注释中服务器信息的列表。

  4. 将模板应用于您的联系人。

  5. 在 Grafana 中导航到您的联系人。

  6. 在**消息**中按名称引用模板(请参阅**可选电子邮件设置**部分)。

    {{ template "Table" . }}

    这会在电子邮件中生成一个格式整齐的表格,将所有受影响服务器的信息分组到单个通知中。

为 Slack 消息的标题创建模板

为 Slack 消息的标题创建模板,以包含触发和已解决警报的数量。

1 firing alert(s), 0 resolved alerts(s)
  1. 创建一个名为slack.title的模板,内容如下:

    {{ define "slack.title" }}
    {{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
    {{ end }}
  2. 在联系人集成中的标题字段中执行模板。

    {{ template "slack.title" . }}

为 Slack 消息的内容创建模板

为 Slack 消息的内容创建模板,以包含所有触发和已解决警报的描述,包括其标签、注释、静默 URL 和仪表盘 URL。

注意

此模板仅适用于 Grafana 管理的警报。要将此模板用于 Grafana Mimir/Loki 管理的警报,请删除对 DashboardURL 和 SilenceURL 的引用。有关更多信息,请参阅Prometheus 通知文档

1 firing alert(s):

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Silence: https://example.com/alerting/silence/new?alertmanager=grafana&matcher=alertname%3DTest1&matcher=grafana_folder%3DGrafanaCloud
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alert(s):

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Silence: https://example.com/alerting/silence/new?alertmanager=grafana&matcher=alertname%3DTest2&matcher=grafana_folder%3DGrafanaCloud
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
  1. 创建一个名为slack的模板,并在内容中包含两个模板:slack.print_alertslack.message

    slack.print_alert模板用于打印标签、注释、SilenceURL 和 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 .SilenceURL -}}
      Silence: {{ .SilenceURL }}
    {{ end -}}
    {{ if .DashboardURL -}}
      Go to dashboard: {{ .DashboardURL }}
    {{- end }}
    {{- end }}
    
    {{ define "slack.message" -}}
    {{ if .Alerts.Firing -}}
    {{ len .Alerts.Firing }} firing alert(s):
    {{ range .Alerts.Firing }}
    {{ template "slack.print_alert" . }}
    {{ end -}}
    {{ end }}
    {{ if .Alerts.Resolved -}}
    {{ len .Alerts.Resolved }} resolved alert(s):
    {{ range .Alerts.Resolved }}
    {{ template "slack.print_alert" .}}
    {{ end -}}
    {{ end }}
    {{- end }}
  2. 在联系人集成中的文本正文字段中执行模板。

    {{ template "slack.message" . }}

使用共享模板为电子邮件和 Slack 创建模板

无需为电子邮件和 Slack 创建单独的通知模板,您可以共享同一个模板。

例如,如果您想发送具有此主题的电子邮件和具有此标题的 Slack 消息:

1 firing alert(s), 0 resolved alerts(s)
  1. 创建一个名为common.subject_title的模板,内容如下:

    {{ define "common.subject_title" }}
    {{ len .Alerts.Firing }} firing alert(s), {{ len .Alerts.Resolved }} resolved alert(s)
    {{ end }}
  2. 对于电子邮件,在电子邮件联系人集成中的主题字段中执行模板。

    {{ template "common.subject_title" . }}
  3. 对于 Slack,在 Slack 联系人集成中的标题字段中执行模板。

    {{ template "common.subject_title" . }}