通知模板参考
Prometheus 会创建告警并将其发送给 Alertmanager,然后 Alertmanager 会根据标签将通知发送给不同的接收者。接收者可以是多种集成之一,包括:Slack、PagerDuty、电子邮件或通过通用 webhook 接口进行自定义集成。
发送给接收者的通知是通过模板构建的。Alertmanager 带有默认模板,但也可以进行自定义。为避免混淆,需要注意 Alertmanager 的模板与 Prometheus 中的模板 不同,但 Prometheus 模板也包括告警规则标签/注释中的模板。
Alertmanager 的通知模板基于 Go 模板系统 。请注意,有些字段被评估为文本,而另一些字段被评估为 HTML,这会影响转义。
数据结构
Data
Data 是传递给通知模板和 webhook 推送的结构。
| 名称 | 类型 | 备注 |
|---|---|---|
| 接收者 | string | 定义通知将发送到的接收者的名称(slack、email 等)。 |
| 状态 | string | 定义为当至少一个警报正在触发时触发,否则已解决。 |
| 警报 | 警报 | 此组中所有警报对象的列表(见下文)。 |
| 分组标签 | 键值对 | 用于分组这些警报的标签。 |
| 通用标签 | 键值对 | 所有警报共有的标签。 |
| 通用注解 | 键值对 | 所有警报共有的注解集。用于关于警报的更长的附加信息字符串。 |
| 外部URL | string | 发件人 Alertmanager 的回链。 |
Alerts 类型提供了过滤警报的函数
Alerts.Firing返回此组中当前触发的警报对象的列表Alerts.Resolved返回此组中已解决的警报对象的列表
警报
Alert 保存用于通知模板的一个警报。
| 名称 | 类型 | 备注 |
|---|---|---|
| 状态 | string | 定义警报是已解决还是正在触发。 |
| 标签 | 键值对 | 要附加到警报的一组标签。 |
| 注解 | 键值对 | 警报的一组注解。 |
| 开始时间 | time.Time | 警报开始触发的时间。如果省略,Alertmanager 将分配当前时间。 |
| 结束时间 | time.Time | 仅在已知警报结束时间时设置。否则,将根据最后收到的警报时间设置为一个可配置的超时周期。 |
| 生成器URL | string | 一个回链,用于标识此警报的致因实体。 |
| 指纹 | string | 用于标识警报的指纹。 |
键值对
KV 是用于表示标签和注解的键/值字符串对的集合。
type KV map[string]string
包含两个注解的注解示例
{
summary: "alert summary",
description: "alert description",
}
除了直接访问存储为 KV 的数据(标签和注解)之外,还有用于排序、删除和查看 LabelSets 的方法。
键值对方法
| 名称 | 参数 | 返回值 | 备注 |
|---|---|---|---|
| 排序后的对 | - | 键值对(键/值字符串对列表)。 | 返回已排序的键/值对列表。 |
| 删除 | []string | 键值对 | 返回一个不包含给定键的键/值映射的副本。 |
| 名称 | - | []string | 返回 LabelSet 中标签名称的名称。 |
| 值 | - | []string | 返回 LabelSet 中值的列表。 |
函数
注意,Go 模板还提供了默认函数 。
字符串
| 名称 | 参数 | 描述 |
|---|---|---|
| 日期 | string, time.Time | 返回指定格式的时间的文本表示。有关格式的文档,请参阅pkg.go.dev/time 。 |
| humanizeDuration | 数字或字符串 | 返回一个人类可读的表示持续时间的字符串,以及发生的错误。 |
| join | sep string, s []string | strings.Join ,连接 s 的元素以创建单个字符串。分隔符字符串 sep 放置在结果字符串的元素之间。(注意:为方便在模板中进行管道操作,参数顺序已反转。) |
| match | pattern, string | Regexp.MatchString 。使用 Regexp 匹配字符串。 |
| reReplaceAll | pattern, replacement, text | Regexp.ReplaceAllString Regexp 替换,未锚定。 |
| safeHtml | text string | html/template.HTML ,将字符串标记为 HTML,无需自动转义。 |
| safeUrl | text string | html/template.URL ,将字符串标记为 URL,无需自动转义。 |
| since | time.Time | time.Since ,返回从提供的时间到当前系统时间的持续时间。 |
| stringSlice | ...string | 返回传入的字符串作为字符串切片。 |
| title | string | strings.Title ,将每个单词的首字母大写。 |
| toJson | any | json.Marshal ,返回值的 JSON 编码。 |
| toLower | string | strings.ToLower ,将所有字符转换为小写。 |
| toUpper | string | strings.ToUpper ,将所有字符转换为大写。 |
| trimSpace | string | strings.TrimSpace ,移除前导和尾随空格。 |
| tz | string, time.Time | 返回时区的日期。例如,Europe/Paris。 |
| urlUnescape | text string | url.QueryUnescape ,对 URL 进行 % 解码 |