如何编写Prometheus AlertManager expr实现阈值以上递增告警
符合需求的PromQL告警表达式
直接用这个表达式就能实现你要的逻辑:
your_metric > 100 AND your_metric > your_metric offset 1m AND your_metric offset 1m > 100
逻辑拆解
your_metric > 100:确保当前指标值超过阈值100your_metric offset 1m > 100:过滤掉“从阈值以下突然窜到阈值以上”的情况,只关注阈值之上的波动your_metric > your_metric offset 1m:确认当前值比1分钟前的采样值高,保证是递增趋势,排除超过阈值后回落的场景
关于avg_over_time的问题
你之前用avg_over_time结合offset没成功,核心原因是你的需求是对比两个时间点的采样值,而avg_over_time计算的是一段时间内的平均值,反而会模糊单时间点的趋势判断。如果你的指标采集间隔不是刚好1分钟,直接把offset的时间改成实际采集间隔即可(比如采集间隔30秒就用offset 30s)。
可选优化(应对指标抖动)
如果你的指标波动频繁,想避免短时间抖动误告警,可以换成区间平均值对比:
avg_over_time(your_metric[1m]) > 100 AND avg_over_time(your_metric[1m]) > avg_over_time(your_metric[1m] offset 1m) AND avg_over_time(your_metric[1m] offset 1m) > 100
这种方式用连续1分钟的平均值替代单时间点采样,判断更平滑。
内容的提问来源于stack exchange,提问作者Janiis
相关产品推荐
相关产品推荐

