首页 > 解决方案 > Alertmanager,不同警报规则的不同间隔

问题描述

我正在使用 alertmanager 获取 prometheus 指标的警报,我对不同的指标有不同的警报规则,是否可以为每个警报规则设置不同的间隔,例如对于 metric1 我有规则 1,我需要每天检查此规则间隔,对于metric2,我有rule2,这个应该每2小时检查一次,

标签: alertprometheus

解决方案


for: 5m属性用于确保规则在触发警报之前连续 X 分钟返回 true。例如,如果 cpu 使用率出现 30 秒的峰值,则不会触发警报,因为我们将for属性设置为 5 分钟。因此,这不是适合您的房产。

我相信您可以使用repeat_interval警报管理器来设置发送通知的时间间隔。然后你有警报,但你会根据你的repeat_interval. 这个链接详细解释了它们。

  • group_wait设置最初等待发送特定警报组通知的时间。
  • group_interval规定在发送有关新警报的通知之前等待多长时间,这些新警报已添加到之前已发出警报的一组警报中
  • repeat_interval用于确定再次发送已成功发送到接收器的触发警报之前的等待时间。

为了让它们发挥作用,您必须label为每个警报定义 's。例如,在我的alerts.yml文件中,我创建标签app_type: serverapp_type: service

groups:
- name: monitor_cpu
  rules:
  - alert: job:node_cpu_usage:percentage_gt_50
    expr: 100 * node_cpu_seconds_total{mode="user"} / ignoring(mode) group_left sum(node_cpu_seconds_total) without(mode) > 5.5
    for: 1m
    labels:
      severity: critical
      app_type: server
    annotations:
      summary: "High CPU usage"
      description: "Server {{ $labels.instance }} has high CPU usage."
- name: targets
  rules:
  - alert: monitor_service_down
    expr: up == 0
    for: 1m
    labels:
      severity: critical
      app_type: service
    annotations:
      summary: "Monitor service non-operational"
      description: "Service {{ $labels.instance }} is down."

然后我创建一个路由树,通过匹配特定标签将通知发送到不同的组。这是我使用的解决方案。我为每个组定义了不同group_waitgroup_interval, 和。repeat_interval然后你可以在不同的叶子中使用repeat_interval: 1h和:repeat_interval: 24hroutes

global:
  smtp_from: 'mail@gmail.com'
  smtp_smarthost: smtp.gmail.com:587
  smtp_auth_username: 'mail@gmail.com'
  smtp_auth_identity: 'mail@gmail.com'
  smtp_auth_password: ''

route:
  receiver: 'admin-team'
  routes:
    - match_re:
        app_type: (server|service)
      receiver: 'admin-team'
      routes:
      - match:
          app_type: server
        receiver: 'admin-team'
        group_wait: 1m
        group_interval: 5m
        repeat_interval: 1h
      - match:
          app_type: service
        receiver: 'dev-team'
        group_wait: 1m
        group_interval: 5m
        repeat_interval: 24h

receivers:
 - name: 'admin-team'
   email_configs:
   - to: 'admin-mail@gmail.com'

 - name: 'dev-team'
   email_configs:
   - to: 'dev-mail@gmail.com'

不幸的是,我没有测试 24 小时,但有不同的分钟间隔,它起作用了。我认为它也可以长时间工作。 在此处输入图像描述


推荐阅读