菜单
开源

Alertmanager集成于Grafana OnCall

注意

⚠️ 旧版集成⚠️ 在版本1.3.21(2023年8月1日)之前创建的集成被标记为(旧版)并迁移。这些集成正在接收和升级警报,但可能需要进行一些手动调整。

Alertmanager集成处理来自Prometheus Alertmanager的警报。此集成是将部署在您的基础设施中的Prometheus警报发送到Grafana OnCall的推荐方式。

小贴士:为每个团队创建一个集成,并配置alertmanager标签选择器,以仅发送与该团队相关的警报。

配置Grafana OnCall接收来自Prometheus Alertmanager的警报

  1. 集成选项卡中,点击+ 新集成
  2. 从可用的集成列表中选择Alertmanager Prometheus
  3. 输入集成的名称和描述,点击创建
  4. 将打开一个新的页面,显示集成详细信息。从HTTP端点部分复制OnCall集成URL。您在配置Alertmanager时需要它。

配置Alertmanager将警报发送到Grafana OnCall

  1. 将新的Webhook接收器添加到Alertmanager配置的receivers部分
  2. url设置为上一节中的OnCall集成URL
    • 注意:URL 后必须有一个尾随斜杠,否则它将无法正常工作。
  3. send_resolved 设置为 true,这样当在 Alertmanager 中解决警报组时,Grafana OnCall 可以自动解决警报组。
  4. 建议将 max_alerts 设置为小于 100,以避免请求过大。
  5. 在您的路由配置中使用此接收器

以下是最终配置的示例

yaml
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 心跳

  1. 转到 集成页面,点击右上角的三个点,点击 心跳设置
  2. 复制 OnCall 心跳 URL,您在配置 Alertmanager 时需要它
  3. 设置 心跳间隔,Grafana OnCall 在没有收到心跳请求后启动新的警报组的时间段

配置 Alertmanager 向 Grafana OnCall 心跳发送心跳

您可以将 Alertmanager 配置为定期向心跳端点发送警报。将 vector(1) 作为心跳生成器添加到 prometheus.yaml。它将始终返回 true 并像始终触发的警报一样,在给定时间段内将警报发送到 Grafana OnCall。

yaml
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

yaml
  ...
  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 组中的每个警报作为单独的有效负载

json
{
  "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 的分组。

json
{
  "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 以适应新的有效负载。

  1. 向迁移的集成发送新的演示警报。
  2. 调整路由以适应新的有效负载形状。您可以使用上一步骤中演示警报的负载作为示例。
  3. 如果出站 Webhook 在触发数据模板中使用了迁移集成的警报有效负载,则还需要调整它们。
Screenshot 2023-12-14 at 1 14 21 PM Screenshot 2023-12-14 at 1 14 32 PM