通知模板参考

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

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

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

数据结构

数据

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

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

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

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

告警

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

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

键值对 (KV)

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

type KV map[string]string

包含两个注释的注释示例

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

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

键值对 (KV) 方法

名称 参数 返回 备注
已排序的对 - 对(键/值字符串对列表)。 返回键/值对的已排序列表。
删除 []字符串 键值对 (KV) 返回没有给定键的键/值映射的副本。
名称 - []字符串 返回 LabelSet 中标签名称的名称。
- []字符串 返回 LabelSet 中值的列表。

函数

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

字符串

名称 参数 返回 备注
标题 字符串 strings.Title,将每个单词的第一个字符大写。
转换为大写 字符串 strings.ToUpper,将所有字符转换为大写。
转换为小写 字符串 strings.ToLower,将所有字符转换为小写。
修剪空格 字符串 strings.TrimSpace,删除前导和尾随空格。
匹配 模式,字符串 Regexp.MatchString。使用正则表达式匹配字符串。
reReplaceAll 模式、替换、文本 Regexp.ReplaceAllString 正则表达式替换,不锚定。
连接 分隔符字符串,s []string strings.Join,连接 s 的元素以创建一个字符串。分隔符字符串 sep 放在结果字符串中的元素之间。(注意:参数顺序颠倒,以便在模板中更容易管道化。)
安全 HTML 文本字符串 html/template.HTML,将字符串标记为 HTML,不需要自动转义。
字符串切片 ...字符串 将传递的字符串作为字符串切片返回。

本文档是开源的。请通过提交问题或拉取请求来帮助改进它。