通知模板参考

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

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

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

数据结构

数据

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 是一组键/值字符串对,用于表示标签和注解。

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 模板也提供了默认函数 

字符串

名称参数返回说明
titlestringstrings.Title ,将每个单词的首字母大写。
toUpperstringstrings.ToUpper ,将所有字符转换为大写。
toLowerstringstrings.ToLower ,将所有字符转换为小写。
trimSpacestringstrings.TrimSpace ,移除前导和尾随的空白字符。
matchpattern, stringRegexp.MatchString 。使用正则表达式匹配字符串。
reReplaceAllpattern, replacement, textRegexp.ReplaceAllString  正则表达式替换,非锚定。
joinsep string, s []stringstrings.Join ,连接 s 的元素以创建一个单一字符串。分隔符字符串 sep 放在结果字符串的元素之间。(注意:为了在模板中更容易地进行管道操作,参数顺序被颠倒了。)
safeHtmltext stringhtml/template.HTML ,将字符串标记为 HTML,不需要自动转义。
stringSlice...string将传入的字符串作为字符串切片返回。
datestring, time.Time以指定格式返回时间的文本表示。有关格式的文档,请参考 pkg.go.dev/time 
tzstring, time.Time返回指定时区的时间。例如,Europe/Paris。
sincetime.Timetime.Duration ,返回从提供的时间到当前系统时间所经过的时长。
humanizeDurationnumber or string返回一个表示时长的易于阅读的字符串,以及如果发生错误则返回错误。

本页内容