alert - Alertmanager,不同警报规则的不同间隔
问题描述
我正在使用 alertmanager 获取 prometheus 指标的警报,我对不同的指标有不同的警报规则,是否可以为每个警报规则设置不同的间隔,例如对于 metric1 我有规则 1,我需要每天检查此规则间隔,对于metric2,我有rule2,这个应该每2小时检查一次,
解决方案
该for: 5m
属性用于确保规则在触发警报之前连续 X 分钟返回 true。例如,如果 cpu 使用率出现 30 秒的峰值,则不会触发警报,因为我们将for
属性设置为 5 分钟。因此,这不是适合您的房产。
我相信您可以使用repeat_interval
警报管理器来设置发送通知的时间间隔。然后你有警报,但你会根据你的repeat_interval
. 这个链接详细解释了它们。
group_wait
设置最初等待发送特定警报组通知的时间。group_interval
规定在发送有关新警报的通知之前等待多长时间,这些新警报已添加到之前已发出警报的一组警报中repeat_interval
用于确定再次发送已成功发送到接收器的触发警报之前的等待时间。
为了让它们发挥作用,您必须label
为每个警报定义 's。例如,在我的alerts.yml
文件中,我创建标签app_type: server
和app_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_wait
的group_interval
, 和。repeat_interval
然后你可以在不同的叶子中使用repeat_interval: 1h
和:repeat_interval: 24h
routes
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'
推荐阅读
- laravel - Automatic status on 2 models
- vue.js - 带有对象/对象数组的 Vuex 表单处理
- post - 每秒发送 php GET 请求来馈送聊天系统是不是很糟糕
- javascript - Echarts:如何根据数据设置不同的线重?
- c# - 在 PCL 项目中使用 Firebase 消息传递变量
- php - 为什么我的表单(收音机)在 laravel 集体中默认检查最后一个元素
- python - 将geojson 图层添加到folium 地图会产生空白输出(仅我使用的geojson 文件会导致此结果)
- c# - 使用 SHA1 的 OAEP 和使用 BouncyCastle 的 MGF1?
- r - 使用R找到所有可能的3个数字组合,其中总和小于给定数字
- swift - 无法解析可编码的数据。我能够获取数据,但是一旦我使用解码功能,我就会出错