通知模板参考
Prometheus 创建并向 Alertmanager 发送告警,Alertmanager 根据标签将通知分发给不同的接收者。接收者可以是多种集成之一,包括:Slack、PagerDuty、电子邮件,或通过通用 Webhook 接口自定义的集成。
发送给接收者的通知通过模板构造。Alertmanager 自带默认模板,但也可以进行自定义。为了避免混淆,请注意 Alertmanager 模板与 Prometheus 中的模板不同,尽管 Prometheus 模板也包括在告警规则标签/注释中使用的模板。
Alertmanager 的通知模板基于 Go 模板 系统。请注意,某些字段被评估为文本,而另一些则被评估为 HTML,这会影响转义。
数据结构
Data
Data 是传递给通知模板和 Webhook 推送的结构。
| 名称 | 类型 | 备注 |
|---|---|---|
| Receiver (接收者) | string | 定义通知发送到的接收者名称(Slack、电子邮件等)。 |
| Status (状态) | string | 如果至少有一个告警处于触发状态,则定义为 firing,否则为 resolved。 |
| Alerts (告警列表) | Alert | 此组中所有告警对象的列表(见下文)。 |
| GroupLabels (分组标签) | KV | 这些告警分组所依据的标签。 |
| CommonLabels (公共标签) | KV | 所有告警共同的标签。 |
| CommonAnnotations (公共注释) | KV | 所有告警共同的一组注释。用于提供有关告警的更详细的附加信息字符串。 |
| ExternalURL | string | 指向发送此通知的 Alertmanager 的反向链接。 |
Alerts 类型公开了用于过滤告警的函数
Alerts.Firing返回此组中当前处于触发状态的告警对象列表Alerts.Resolved返回此组中已解决的告警对象列表
Alert
Alert 在通知模板中持有一个告警。
| 名称 | 类型 | 备注 |
|---|---|---|
| Status (状态) | string | 定义告警是已解决还是当前正在触发。 |
| Labels (标签) | KV | 要附加到告警的一组标签。 |
| Annotations (注释) | 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 模板本身提供的默认函数 。
字符串
| 名称 | 参数 | 描述 |
|---|---|---|
| date | string, time.Time | 返回指定格式的时间文本表示。有关格式的文档,请参阅 pkg.go.dev/time 。 |
| humanizeDuration | number 或 string | 返回代表该时长的易读字符串,如果发生错误则返回错误。 |
| join | sep string, s []string | strings.Join ,连接 s 中的元素以创建一个字符串。分隔符字符串 sep 放置在结果字符串的元素之间。(注意:为了模板中更容易进行管道化处理,参数顺序已反转。) |
| match | pattern, string | Regexp.MatchString 。使用正则表达式匹配字符串。 |
| reReplaceAll | pattern, replacement, text | Regexp.ReplaceAllString 正则表达式替换,非锚定。 |
| 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 进行反转义 |