Alertmanager集成于Grafana OnCall
注意
⚠️ 旧版集成⚠️ 在版本1.3.21(2023年8月1日)之前创建的集成被标记为(旧版)并迁移。这些集成正在接收和升级警报,但可能需要进行一些手动调整。
Alertmanager集成处理来自Prometheus Alertmanager的警报。此集成是将部署在您的基础设施中的Prometheus警报发送到Grafana OnCall的推荐方式。
小贴士:为每个团队创建一个集成,并配置alertmanager标签选择器,以仅发送与该团队相关的警报。
配置Grafana OnCall接收来自Prometheus Alertmanager的警报
- 在集成选项卡中,点击+ 新集成。
- 从可用的集成列表中选择Alertmanager Prometheus。
- 输入集成的名称和描述,点击创建
- 将打开一个新的页面,显示集成详细信息。从HTTP端点部分复制OnCall集成URL。您在配置Alertmanager时需要它。
配置Alertmanager将警报发送到Grafana OnCall
- 将新的Webhook接收器添加到Alertmanager配置的
receivers
部分 - 将
url
设置为上一节中的OnCall集成URL- 注意:URL 后必须有一个尾随斜杠,否则它将无法正常工作。
- 将
send_resolved
设置为true
,这样当在 Alertmanager 中解决警报组时,Grafana OnCall 可以自动解决警报组。 - 建议将
max_alerts
设置为小于100
,以避免请求过大。 - 在您的路由配置中使用此接收器
以下是最终配置的示例
route:
receiver: "oncall"
group_by: [alertname, datacenter, app]
receivers:
- name: "oncall"
webhook_configs:
- url: <integration-url>
send_resolved: true
max_alerts: 100
完成集成配置
通过设置路由、模板、维护等来完成配置。更多内容请参阅本节
关于分组和自动解决注意事项
Grafana OnCall 依赖于 Alertmanager 的分组和自动解决机制,以确保 OnCall 和 AlertManager 中警报状态的一致性。建议在 Alertmanager 端配置分组,并在 OnCall 端使用默认的分组和自动解决模板。更改这些模板可能会导致分组和自动解决行为不正确。这不太可能是您想要的,除非您已在 AlertManager 端禁用了分组。
配置 OnCall 心跳(可选)
OnCall 心跳作为监控系统。如果您的监控系统故障并停止发送警报,Grafana OnCall 将通知您。
配置 Grafana OnCall 心跳
- 转到 集成页面,点击右上角的三个点,点击 心跳设置
- 复制 OnCall 心跳 URL,您在配置 Alertmanager 时需要它
- 设置 心跳间隔,Grafana OnCall 在没有收到心跳请求后启动新的警报组的时间段
配置 Alertmanager 向 Grafana OnCall 心跳发送心跳
您可以将 Alertmanager 配置为定期向心跳端点发送警报。将 vector(1)
作为心跳生成器添加到 prometheus.yaml
。它将始终返回 true 并像始终触发的警报一样,在给定时间段内将警报发送到 Grafana OnCall。
groups:
- name: meta
rules:
- alert: heartbeat
expr: vector(1)
labels:
severity: none
annotations:
description: This is a heartbeat alert for Grafana OnCall
summary: Heartbeat for Grafana OnCall
将接收器配置添加到 prometheus.yaml
,其中包含 OnCall 心跳 URL
...
route:
...
routes:
- match:
alertname: heartbeat
receiver: 'grafana-oncall-heartbeat'
group_wait: 0s
group_interval: 1m
repeat_interval: 50s
receivers:
- name: 'grafana-oncall-heartbeat'
webhook_configs:
- url: https://oncall-dev-us-central-0.grafana.net/oncall/integrations/v1/alertmanager/1234567890/heartbeat/
send_resolved: false
关于旧版集成注意事项
旧版集成使用 AlertManager 组中的每个警报作为单独的有效负载
{
"labels": {
"severity": "critical",
"alertname": "InstanceDown"
},
"annotations": {
"title": "Instance localhost:8081 down",
"description": "Node has been down for more than 1 minute"
},
...
}
这种行为会导致 OnCall 和 AlertManager 之间警报状态的失配,并耗尽速率限制,因为每个 AlertManager 警报都单独计数。
我们决定更改这种行为,通过使用 AlertManager 组作为单一的有效负载来尊重 AlertManager 的分组。
{
"alerts": [...],
"groupLabels": {
"alertname": "InstanceDown"
},
"commonLabels": {
"job": "node",
"alertname": "InstanceDown"
},
"commonAnnotations": {
"description": "Node has been down for more than 1 minute"
},
"groupKey": "{}:{alertname=\"InstanceDown\"}",
...
}
您可以在这里了解更多关于 AlertManager 数据模型的信息。
迁移后检查清单
集成 URL 将保持不变,因此无需更改 AlertManager 或 Grafana 警报配置。集成模板将重置以适应新的有效负载。需要手动调整路由和出站 Webhook 以适应新的有效负载。