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
是一组用于表示标签和注释的键/值字符串对。
type KV map[string]string
包含两个注释的注释示例
{
summary: "alert summary",
description: "alert description",
}
除了直接访问存储为 KV 的数据(标签和注释)外,还有用于排序、删除和查看 LabelSet 的方法
名称 | 参数 | 返回 | 备注 |
---|---|---|---|
已排序的对 | - | 对(键/值字符串对列表)。 | 返回键/值对的已排序列表。 |
删除 | []字符串 | 键值对 (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,不需要自动转义。 | |
字符串切片 | ...字符串 | 将传递的字符串作为字符串切片返回。 |
本文档是开源的。请通过提交问题或拉取请求来帮助改进它。