Alertmanager,不同的警报规则有不同的间隔

SMA*_*SMA 6 alert prometheus

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

Fel*_*ipe 12

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

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

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

为了让它们发挥作用,您必须label为每个警报定义 。例如,在我的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."
Run Code Online (Sandbox Code Playgroud)

然后我创建一个路由树,通过匹配特定标签将通知发送到不同的组。这是我使用的解决方案。我为每个组定义了不同的group_waitgroup_interval、 和repeat_interval。然后你可以在不同的叶子中使用 therepeat_interval: 1h和 the :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'

Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有测试 24 小时,而是以不同的分钟间隔进行测试,但它确实有效。我认为它也可以长时间工作。 在此输入图像描述