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
是用于表示标签和注解的键/值字符串对的集合。
type KV map[string]string
包含两个注解的注解示例
{
summary: "alert summary",
description: "alert description",
}
除了直接访问存储为 KV 的数据(标签和注解)外,还有用于排序、删除和查看 LabelSets 的方法
名称 | 参数 | 返回值 | 备注 |
---|---|---|---|
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 来帮助改进它。