选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用消息传递模板

聚焦模式
使用消息传递模板 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文档主题专为支持 Grafana 8.x 版本的 Grafana 工作区而设计。

对于支持 Grafana 10.x 版本的 Grafana 工作区,请参阅使用 Grafana 版本 10

对于支持 Grafana 9.x 版本的 Grafana 工作区,请参阅使用 Grafana 版本 9

通过 使用联系点 发送的通知使用消息传递模板构建。Grafana 的默认模板基于 Go 模板系统,其中一些字段作为文本评估,而另一些字段则作为 HTML 评估(可能会影响转义)。

大部分联系点字段都可以模板化,因此您可以创建可重复使用的自定义模板,并在多个联系点中使用它们。模板数据 主题列出了可用于创建模板的变量。

使用模板

模板用于创建消息。例如,通过 Slack 警报消息,您可以在联系点中设置标题和正文。以下示例展示了如何使用默认模板创建包含警报触发和解决计数的标题,以及列出警报及其状态的正文。

  • 标题

    {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  • 文本正文

    {{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }} {{end }}

您可以创建自己的自定义模板,如以下示例所示。

  • 标题

    {{ template "slack.default.title" .}}
  • 文本正文

    {{ template "mymessage" .}}

以下是示例模板。

{{ define "myalert" }} [{{.Status}}] {{ .Labels.alertname }} Labels: {{ range .Labels.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ if gt (len .Annotations) 0 }} Annotations: {{ range .Annotations.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ end }} {{ if gt (len .SilenceURL ) 0 }} Silence alert: {{ .SilenceURL }} {{ end }} {{ if gt (len .DashboardURL ) 0 }} Go to dashboard: {{ .DashboardURL }} {{ end }} {{ end }}

以下过程展示了如何创建、编辑和删除自定义消息模板。

要创建消息模板
  1. 在 Grafana 控制台的 Grafana 菜单中,选择警报(铃铛)图标,打开警报页面。

  2. 选择联系点

  3. Alertmanager 下拉列表中,选择要为其创建消息模板的 Alertmanager 实例。默认为 Grafana Alertmanager。

  4. 选择添加模板

  5. 添加描述性名称

  6. 为模板添加内容,例如:

    {{ define "mymessage" }} {{ range .Alerts }} [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}} {{ end }} {{ end }}

    “内容”部分中的 define 标签用于指定模板名称。此标签是可选的,如果省略,模板名称将从名称字段派生。如果指定了两者,最好的做法是保持一致。

  7. 选择保存模板

注意

警报消息模板中的 HTML 将渲染为文本,并转义控制字符。Grafana 不支持在生成的通知中渲染 HTML。

编辑消息模板
  1. 警报页面,选择联系点,以打开联系点列表。

  2. 模板表中,找到要编辑的模板,然后选择编辑图标(笔)。

  3. 进行更改,然后选择保存模板

删除消息模板
  1. 警报页面,选择联系点,以打开联系点列表。

  2. 模板表中,找到要移除的模板,然后选择删除图标(垃圾桶)。

  3. 选择是,删除,以删除模板。

嵌套模板

您可以将模板嵌入到其他模板中。

例如,你可以使用 define 关键字定义一个模板片段:

{{ define "mytemplate" }} {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved. {{ end }}

然后,您可以使用 template 关键字将自定义模板嵌入到此片段中。例如:

Alert summary: {{ template "mytemplate" . }}

您可以使用以下内置模板选项嵌入自定义模板。

名称 备注

default.title

显示概览状态信息。

default.message

提供已触发和已解决警报的格式化摘要。

自定义模板示例

以下是如何使用自定义模板的示例。

渲染单个警报的模板:

{{ define "myalert" }} [{{.Status}}] {{ .Labels.alertname }} Labels: {{ range .Labels.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ if gt (len .Annotations) 0 }} Annotations: {{ range .Annotations.SortedPairs }} {{ .Name }}: {{ .Value }} {{ end }} {{ end }} {{ if gt (len .SilenceURL ) 0 }} Silence alert: {{ .SilenceURL }} {{ end }} {{ if gt (len .DashboardURL ) 0 }} Go to dashboard: {{ .DashboardURL }} {{ end }} {{ end }}

渲染整条通知消息的模板:

{{ define "mymessage" }} {{ if gt (len .Alerts.Firing) 0 }} {{ len .Alerts.Firing }} firing: {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }} {{ end }} {{ if gt (len .Alerts.Resolved) 0 }} {{ len .Alerts.Resolved }} resolved: {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }} {{ end }} {{ end }}

模板数据

以下数据将传递给消息模板。

名称 类型 备注

Receiver

字符串

要向其发送通知的联系点的名称。

Status

字符串

如果至少有一个警报已触发,则为“触发”,否则为“已解决”。

Alerts

警报

此通知中包含的警报对象列表(见下文)。

GroupLabels

KeyValue

这些警报的分组标签。

CommonLabels

KeyValue

此通知中包含的所有警报的通用标签。

CommonAnnotations

KeyValue

此通知中包含的所有警报的通用注释。

ExternalURL

字符串

指向发送通知的 Grafana 的返回链接。如果使用外部 Alertmanager,则是指向此 Alertmanager 的返回链接。

Alerts 类型公开了两个函数,用于筛选返回的警报。

  • Alerts.Firing:返回已触发警报的列表。

  • Alerts.Resolved:返回已解决警报的列表。

警报(类型)

警报类型包含以下数据。

名称 类型 备注

状态

字符串

firingresolved

标签

KeyValue

附加到警报的一组标签。

Annotations

KeyValue

附加到警报的一组注释。

StartsAt

time.Time

警报开始触发的时间。

EndsAt

time.Time

仅在知道警报结束时间时设置。否则,设置为从收到最后一次警报的时间起算的可配置的超时周期。

GeneratorURL

字符串

指向 Grafana 或外部 Alertmanager 的返回链接。

SilenceURL

字符串

指向 Grafana 静默的链接,其中预填了此警报的标签。仅适用于 Grafana 管理的警报。

DashboardURL

字符串

指向 Grafana 控制面板的链接(适用于警报规则属于 Grafana 控制面板的情况)。仅适用于 Grafana 管理的警报。

PanelURL

字符串

指向 Grafana 控制面板中面板的链接(适用于警报规则属于 Grafana 控制面板中面板的情况)。仅适用于 Grafana 管理的警报。

指纹

字符串

可用于识别警报的指纹。

ValueString

字符串

该字符串包含警报中每个简化表达式的标签和值。

KeyValue type

KeyValue 类型是一组表示标签和注释的键/值字符串对。

除了直接访问存储为 KeyValue 的数据外,还有方法可以对这些数据进行排序、删除和转换。

名称 参数 返回值 备注

SortedPairs

键值字符串对的排序列表

删除

[]string

KeyValue

返回不包含给定键的键/值映射副本。

名称

[]string

标签名称列表

[]string

标签值列表

模板函数

使用模板函数,您可以处理标签和注释,以生成动态通知。可使用以下函数。

名称 参数类型 返回类型 描述

humanize

数字或字符串

字符串

使用公制前缀将数字转换为更易读的格式。

humanize1024

数字或字符串

字符串

与 humanize 类似,但使用 1024 作为基数,而不是 1000。

humanizeDuration

数字或字符串

字符串

将以秒为单位的持续时间转换为更易读的格式。

humanizePercentage

数字或字符串

字符串

将比率值转换为百分比。

humanizeTimestamp

数字或字符串

字符串

将以秒为单位的 Unix 时间戳转换为更易读的格式。

title

字符串

字符串

strings.Title,将每个单词的第一个字符大写。

toUpper

字符串

字符串

字符串。 ToUpper,将所有字符转换为大写。

toLower

字符串

字符串

字符串。 ToLower,将所有字符转换为小写。

match

模式、文本

布尔值

regexp。 MatchString 测试未锚定的 regexp 匹配项。

reReplaceAll

模式、置换、文本

字符串

Regexp。 ReplaceAllString 正则表达式替换,未锚定。

graphLink

字符串:包含 exprdatasource 字段的 JSON 对象

字符串

返回给定表达式和数据来源在 Explore 中图形视图的路径。

tableLink

字符串:包含 exprdatasource 字段的 JSON 对象

字符串

返回给定表达式和数据来源在 Explore 中表格视图的路径。

args

[]interface{}

map[string]interface{}

将对象列表转换为带键的映射,例如 arg0、arg1。使用此函数可将多个参数传递给模板。

externalURL

nothing

字符串

返回代表外部 URL 的字符串。

pathPrefix

nothing

字符串

返回外部 URL 的路径。

下表列出了每个函数的使用示例。

函数 TemplateString 输入 预期

humanize

{ humanize $value }

1234567.0

1.235M

humanize1024

{ humanize1024 $value }

1048576.0

1Mi

humanizeDuration

{ humanizeDuration $value }

899.99

14m 59s

humanizePercentage

{ humanizePercentage $value }

0.1234567

12.35%

humanizeTimestamp

{ humanizeTimestamp $value }

1435065584.128

2015-06-23 13:19:44.128 +0000 UTC

删除实例快照

{ $value | title }

aa bB CC

Aa Bb Cc

toUpper

{ $value | toUpper }

aa bB CC

AA BB CC

toLower

{ $value | toLower }

aa bB CC

aa bb cc

match

{ match "a+" $labels.instance }

aa

true

reReplaceAll

{{ reReplaceAll “localhost :( .*)” “我的.domain:$1" $labels.instance}}

localhost:3000

my.domain:3000

graphLink

{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}

/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]

tableLink

{{ tableLink "{\"expr\":\"up\", \"datasource\":\"gdev-prometheus\"}" }}

/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]

args

{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}

1 2

externalURL

{ externalURL }

http://localhost/path/prefix

pathPrefix

{ pathPrefix }

/path/prefix

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。