通知模板参考

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

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

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

数据结构

数据

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

名称 类型 注释
接收器 字符串 定义将通知发送到的接收器名称(slack、email 等)。
状态 字符串 如果至少有一个告警正在触发,则定义为触发中;否则为已解决。
告警 告警 此组中所有告警对象的列表(见下文)。
GroupLabels KV 这些告警分组依据的标签。
CommonLabels KV 所有告警共有的标签。
CommonAnnotations KV 所有告警共有的注释集。用于关于告警的更长附加信息字符串。
ExternalURL 字符串 指向发送通知的 Alertmanager 的反向链接。

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

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

告警

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

名称 类型 注释
状态 字符串 定义告警是已解决还是当前正在触发。
标签 KV 要附加到告警的一组标签。
注释 KV 告警的一组注释。
StartsAt time.Time 告警开始触发的时间。如果省略,则 Alertmanager 分配当前时间。
EndsAt time.Time 仅当已知告警的结束时间时才设置。否则,设置为自上次收到告警起可配置的超时时间段。
GeneratorURL 字符串 标识此告警原因实体的反向链接。
Fingerprint 字符串 可用于标识告警的指纹。

KV

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

type KV map[string]string

包含两个注释的注释示例

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

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

KV 方法

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

函数

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

字符串

名称 参数 返回值 注释
title 字符串 strings.Title,将每个单词的首字母大写。
toUpper 字符串 strings.ToUpper,将所有字符转换为大写。
toLower 字符串 strings.ToLower,将所有字符转换为小写。
trimSpace 字符串 strings.TrimSpace,删除前导和尾随空格。
match pattern, string Regexp.MatchString。使用 Regexp 匹配字符串。
reReplaceAll pattern, replacement, text Regexp.ReplaceAllString Regexp 替换,非锚定。
join sep string, s []string strings.Join,连接 s 的元素以创建一个字符串。分隔符字符串 sep 放在结果字符串中的元素之间。(注意:参数顺序已反转,以便于在模板中进行管道传输。)
safeHtml text string html/template.HTML,将字符串标记为 HTML,不需要自动转义。
stringSlice ...string 将传递的字符串作为字符串切片返回。
date string, time.Time 以指定格式返回时间的文本表示形式。有关格式的文档,请参阅 pkg.go.dev/time
tz string, time.Time 返回时区的时间。例如,Europe/Paris。
since time.Time time.Duration,返回从提供的时间到当前系统时间经过的时间长度。
humanizeDuration number or string 返回表示持续时间的人类可读字符串,以及发生的错误(如果有)。

此文档是开源的。请通过提交 issue 或 pull request 来帮助改进它。