通知模板参考

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

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

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

数据结构

数据

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

名称 类型 备注
接收者 string 定义通知将发送到的接收者名称(如 slack、电子邮件等)。
状态 string 如果至少有一个告警正在触发 (firing),则定义为 firing,否则定义为 resolved。
Alerts 告警 此组中所有告警对象的列表(参见下方)。
GroupLabels KV 这些告警分组所依据的标签。
CommonLabels KV 所有告警共有的标签。
CommonAnnotations KV 所有告警共有的注解集合。用于包含更长的告警附加信息字符串。
ExternalURL string 指向发送通知的 Alertmanager 的回链。

Alerts 类型提供用于过滤告警的函数

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

告警

Alert 在通知模板中表示一个告警。

名称 类型 备注
状态 string 定义告警是已解决还是当前正在触发。
标签 KV 附加到告警的标签集合。
注解 KV 告警的注解集合。
StartsAt time.Time 告警开始触发的时间。如果省略,则由 Alertmanager 分配当前时间。
EndsAt time.Time 仅当知道告警的结束时间时设置。否则,会根据接收到最后一个告警的时间设置一个可配置的超时时间段。
GeneratorURL string 标识此告警生成实体的回链。
Fingerprint string 可用于识别告警的指纹。

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 string strings.Title,将每个单词的首字母大写。
toUpper string strings.ToUpper,将所有字符转换为大写。
toLower string strings.ToLower,将所有字符转换为小写。
trimSpace string strings.TrimSpace,移除前导和尾随空白字符。
match pattern, string Regexp.MatchString。使用正则表达式匹配字符串。
reReplaceAll pattern, replacement, text Regexp.ReplaceAllString 正则表达式替换,不锚定。
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 来帮助改进它。