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