假设我有一个与磁盘空间相关的警报,它在以下级别触发。 首先是 85%(这个接收者是管理员),然后是 90%(这个接收者是超级管理员),最后是 95%(这个超级管理员的接收者)。 现在我要解决的问题是,假设触发了第一个警报,现在磁盘空间为 88%。现在,无论谁是负责人都收到了警报,但超过 40 分钟警报仍未解决,磁盘空间仅保持在 88%。负责人正在收到警报,但由于他们不可用,他们无法解决此警报。 现在我想做的是在 alertmanager 中创建一个升级策略,假设第一个触发的警报在不到 30 分钟的时间内没有被管理员解决,它应该升级到超级管理员,如果它有类似的注意事项超过 45 分钟仍未解决,应升级为超级管理员。
我的规则文件看起来像这样
- 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: '{% raw %}{{reReplaceAll "(.*):(.*)" "${1}" $labels.instance}} - Disk {{$labels.device}} ({{$labels.mountpoint}}) has {{$value | printf "%.2f"}} (>80%) space usage{% endraw %}'
summary: '{% raw %}WARN: {{ reReplaceAll "(.*):(.*)" "${1}" $labels.instance }} - Disk {{$labels.device }} ({{$labels.mountpoint}}) is {{$value | printf "%.2f"}}% full {% endraw %}'
我有类似的磁盘使用率 90% 和 95% 占用警报
我的 alertmanager.yml 非常普通(只需添加路由和接收器,我有类似的超级管理员和超级管理员接收器)
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: '[email protected]'
send_resolved: true
headers:
subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'
- name: 'admin'
email_configs:
- to: '[email protected]'
send_resolved: true
headers:
subject: '[{{ .Status | toUpper }}{{if eq .Status "firing"}}:{{.Alerts.Firing|len}}{{end}}] {{ .CommonAnnotations.summary }}'
谢谢
警报升级超出了 alertmanager 的范围。
您可以在 PagerDuty 或模拟中详细配置升级。
或者,您可以再创建两个相同的警报,但使用
for: 30m
和 for: 45m
以及相应的接收器。