You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Alertmanager中配置基于时间的磁盘使用率告警升级策略?

问题描述

已配置磁盘使用率分层告警:

  • 使用率达85%时触发告警通知admin
  • 90%时通知super-admin
  • 95%时通知ultra-admin

当前遇到问题:当85%告警触发后,磁盘使用率维持在88%且超过40分钟未被admin处理,需在Alertmanager中配置基于时间的升级策略:

  • 告警30分钟未解决 → 升级通知super-admin
  • 告警45分钟未解决 → 升级通知ultra-admin

原85%告警规则(90%、95%为同类配置):

- alert: DiskUsage85
    expr: '(100 - (sum(node_filesystem_avail_bytes{instance="abc.xyz:9100"}  / node_filesystem_size_bytes{instance="abc.xyz:9100"}) BY (device,instance,mountpoint,stack) * 100)) > 85'
    for: 5m
    labels:
      maildest: admin
      severity: critical
    annotations:
      description: '{{reReplaceAll "(.*):(.*)" "${1}" $labels.instance}} - Disk {{$labels.device}} ({{$labels.mountpoint}}) has {{$value | printf "%.2f"}} (>80%) space usage'
      summary: 'WARN: {{ reReplaceAll "(.*):(.*)" "${1}" $labels.instance }} - Disk {{$labels.device }} ({{$labels.mountpoint}}) is {{$value | printf "%.2f"}}% full'

原Alertmanager基础配置:

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 24h
  receiver: team-X-mails
  
  routes:
    - receiver: admin
      match:
        maildest: admin

    - receiver: super-admin
      match:
        maildest: super-admin

    - receiver: ultra-admin
      match:
        maildest: ultra-admin
        
receivers:
- name: 'team-X-mails'
  email_configs:
    - to: 'abc@gmail.com'
      send_resolved: true
      headers:
        subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'

- name: 'admin'
  email_configs:
    - to: 'admin@gmail.com'
      send_resolved: true
      headers:
        subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'
解决方案

核心利用Alertmanager路由的wait_for参数实现延迟升级通知,通过continue: true保留告警的递进匹配逻辑,同时兼容原有分层告警规则。

1. 补充缺失的Receiver配置

先在receivers节点中添加super-admin和ultra-admin的邮件配置:

- name: 'super-admin'
  email_configs:
    - to: 'super-admin@gmail.com'
      send_resolved: true
      headers:
        subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'

- name: 'ultra-admin'
  email_configs:
    - to: 'ultra-admin@gmail.com'
      send_resolved: true
      headers:
        subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'

2. 调整Alertmanager路由规则

修改route.routes节点,优先处理DiskUsage85的升级逻辑,再保留原有按maildest匹配的规则:

route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 24h
  receiver: team-X-mails
  
  routes:
    # DiskUsage85告警升级策略
    - match:
        alertname: DiskUsage85
      receiver: admin
      continue: true  # 允许告警继续匹配后续路由
    
    - match:
        alertname: DiskUsage85
      receiver: super-admin
      wait_for: 30m  # 告警触发30分钟未解决,发送给super-admin
      continue: true
    
    - match:
        alertname: DiskUsage85
      receiver: ultra-admin
      wait_for: 45m  # 告警触发45分钟未解决,发送给ultra-admin
    
    # 原有分层告警匹配规则(对应90%、95%告警)
    - receiver: admin
      match:
        maildest: admin

    - receiver: super-admin
      match:
        maildest: super-admin

    - receiver: ultra-admin
      match:
        maildest: ultra-admin

配置说明

  • wait_for:指定告警处于firing状态满设定时长后,才会发送给对应接收人,实现延迟升级
  • continue: true:允许同一个告警继续匹配后续路由,保证升级逻辑的递进性
  • 原有90%、95%的告警会通过maildest标签直接匹配对应接收人,不受升级策略影响
  • send_resolved: true:在告警恢复时发送通知,便于管理员确认问题已解决

内容的提问来源于stack exchange,提问作者zimba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:47:55