请参与 Prometheus 用户调研(2026 年 3 月版) ,帮助社区确定未来开发工作的优先级!

通知模板参考

Prometheus 创建并向 Alertmanager 发送告警,Alertmanager 根据标签将通知分发给不同的接收者。接收者可以是多种集成之一,包括:Slack、PagerDuty、电子邮件,或通过通用 Webhook 接口自定义的集成。

发送给接收者的通知通过模板构造。Alertmanager 自带默认模板,但也可以进行自定义。为了避免混淆,请注意 Alertmanager 模板与 Prometheus 中的模板不同,尽管 Prometheus 模板也包括在告警规则标签/注释中使用的模板。

Alertmanager 的通知模板基于 Go 模板  系统。请注意,某些字段被评估为文本,而另一些则被评估为 HTML,这会影响转义。

数据结构

Data

Data 是传递给通知模板和 Webhook 推送的结构。

名称类型备注
Receiver (接收者)string定义通知发送到的接收者名称(Slack、电子邮件等)。
Status (状态)string如果至少有一个告警处于触发状态,则定义为 firing,否则为 resolved。
Alerts (告警列表)Alert此组中所有告警对象的列表(见下文)。
GroupLabels (分组标签)KV这些告警分组所依据的标签。
CommonLabels (公共标签)KV所有告警共同的标签。
CommonAnnotations (公共注释)KV所有告警共同的一组注释。用于提供有关告警的更详细的附加信息字符串。
ExternalURLstring指向发送此通知的 Alertmanager 的反向链接。

Alerts 类型公开了用于过滤告警的函数

  • Alerts.Firing 返回此组中当前处于触发状态的告警对象列表
  • Alerts.Resolved 返回此组中已解决的告警对象列表

Alert

Alert 在通知模板中持有一个告警。

名称类型备注
Status (状态)string定义告警是已解决还是当前正在触发。
Labels (标签)KV要附加到告警的一组标签。
Annotations (注释)KV告警的一组注释。
StartsAttime.Time告警开始触发的时间。如果省略,Alertmanager 将分配当前时间。
EndsAttime.Time仅在已知告警结束时间时设置。否则,设置为自收到上一个告警以来的可配置超时时间。
GeneratorURLstring标识此告警来源实体的反向链接。
Fingerprint (指纹)string可用于识别告警的指纹。

KV

KV 是一组键/值字符串对,用于表示标签和注释。

type KV map[string]string

包含两个注释的注释示例

{
  summary: "alert summary",
  description: "alert description",
}

除了直接访问存储为 KV 的数据(标签和注释)外,还有用于对 LabelSets 进行排序、移除和查看的方法

KV 方法

名称参数返回值备注
SortedPairs-Pairs(键/值字符串对列表)返回排序后的键/值对列表。
Remove[]stringKV返回剔除给定键后的键/值映射副本。
Names-[]string返回 LabelSet 中标签名称的名称列表。
Values-[]string返回 LabelSet 中的值列表。

函数

请注意 Go 模板本身提供的默认函数 

字符串

名称参数描述
datestring, time.Time返回指定格式的时间文本表示。有关格式的文档,请参阅 pkg.go.dev/time 
humanizeDurationnumber 或 string返回代表该时长的易读字符串,如果发生错误则返回错误。
joinsep string, s []stringstrings.Join ,连接 s 中的元素以创建一个字符串。分隔符字符串 sep 放置在结果字符串的元素之间。(注意:为了模板中更容易进行管道化处理,参数顺序已反转。)
matchpattern, stringRegexp.MatchString 。使用正则表达式匹配字符串。
reReplaceAllpattern, replacement, textRegexp.ReplaceAllString  正则表达式替换,非锚定。
safeHtmltext stringhtml/template.HTML ,将字符串标记为 HTML,不需要自动转义。
safeUrltext stringhtml/template.URL ,将字符串标记为 URL,不需要自动转义。
sincetime.Timetime.Since ,返回自给定时间起至今流逝的时间。
stringSlice...string将传入的字符串返回为字符串切片。
titlestringstrings.Title ,将每个单词的首字母大写。
toJsonanyjson.Marshal ,返回值的 JSON 编码。
toLowerstringstrings.ToLower ,将所有字符转换为小写。
toUpperstringstrings.ToUpper ,将所有字符转换为大写。
trimSpacestringstrings.TrimSpace ,移除首尾的空格。
tzstring, time.Time返回指定时区的时间。例如:Europe/Paris。
urlUnescapetext stringurl.QueryUnescape ,对 % 编码的 URL 进行反转义

本页内容