通知模板参考

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

发送给接收者的通知是通过模板构建的。Alertmanager 附带了 默认模板 ,但它们也可以自定义。为了避免混淆,需要注意的是 Alertmanager 模板与 Prometheus 中的模板不同,不过 Prometheus 模板也包括告警规则标签/注解中的模板化。

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

数据结构

Data

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

名称类型备注
Receiverstring定义接收通知的接收者名称(如 slack、email 等)。
Statusstring如果至少有一个告警正在触发,则定义为 firing(触发中),否则为 resolved(已解决)。
AlertsAlert此组中所有告警对象的列表(见下文)。
GroupLabelsKV这些告警的分组标签。
CommonLabelsKV所有告警共有的标签。
CommonAnnotationsKV所有告警共有的注解集。用于关于告警的较长附加信息字符串。
ExternalURLstring指向发送该通知的 Alertmanager 的反向链接。

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

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

Alert

Alert 保存通知模板的一个告警。

名称类型备注
Statusstring定义告警是已解决还是当前正在触发。
LabelsKV要附加到告警的一组标签。
AnnotationsKV告警的一组注解。
StartsAttime.Time告警开始触发的时间。如果省略,则由 Alertmanager 分配当前时间。
EndsAttime.Time仅在已知告警的结束时间时设置。否则,设置为自收到最后一个告警以来可配置的超时时间。
GeneratorURLstring标识引发此告警的实体的反向链接。
Fingerprintstring可用于识别告警的指纹。

KV

KV 是一组用于表示标签 and 注解的键/值字符串对。

type KV map[string]string

包含两个注解的注解示例

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

除了直接访问以 KV 形式存储的数据(标签和注解)之外,还有对 LabelSet 进行排序、删除和查看的方法

KV 方法

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

函数

请注意 Go 模板还提供了 默认函数 

字符串

名称参数描述
appendslice []any, args ...any返回一个新切片,其中将提供的参数追加到提供的切片中。
datestring, time.Time返回指定格式时间的文本表示。有关格式的文档,请参阅 pkg.go.dev/time 
dictvalues ...any返回一个从可变键值对列表构建的 string 到 any 的映射。参数数量必须为偶数,且键必须为字符串。
humanizeDurationnumber 或 string返回表示持续时间的人类可读字符串,以及发生的错误(如果有)。
joinsep string, s []stringstrings.Join ,连接 s 的元素以创建单个字符串。分隔符字符串 sep 放在结果字符串中的元素之间。(注意:参数顺序相反,以便于模板中的管道传输。)
list...any将传递的参数作为接口切片返回。
matchpattern, stringRegexp.MatchString 。使用正则表达式匹配字符串。
nowtime.Now ,返回当前本地时间。
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 进行反转义

本页内容