如何避免用户重试导致的监控告警

59 阅读2分钟

在监控告警实践过程中,会遇到一类问题,就是告警的触发是因为某些用户在短时间内不断重试导致的。

比如“生成失败率告警“,在十分钟这个检测周期内,触发了告警阈值。通过分析发现,有一半失败的样本都是来源于同一个用户。

单个用户造成大量异常上报,其实也属于一种噪音。在这种情况下,可以采取什么策略来防止单个用户的重复尝试触发告警?

增加用户阈值

在告警配置里面,一般会有两种阈值,样本量阈值和用户阈值。

一般来说样本量指的是某个指标的上报量,用户数指的是这个指标的用户数(上报量根据user_id去重的数量),触发报警时,需要同时满足:指标项达线(阈值或者同环比)且 样本量阈值达线 且 用户数阈值达线

  1. 指标项达线means:根据配置,大于/小于/向上波动/向下波动,判定是否满足

  2. 样本量/用户数阈值达线means:样本量/用户数大于等于阈值线

减少这类噪音,可以简单地调高用户阈值,这样告警就不会像之前那么容易触发。但是这样也会误伤,掩盖非重试的告警,因此需要找到一个平衡点。

将上报数改为用户数

假如我们的“生成失败率告警“这个规则,检测的指标是上报量。如果一个用户短期有大量的失败重试,就会有大量的异常上报量。此时失败率这个很容易触发阈值。

但是如果检测的指标不是上报量,而且上报的用户数。也就是不论这个用户短期重试了多少次,上报的用户数都会统计为一个。这样就从根源上避免重试导致的噪音。

用户维度的告警阈值

如果监控告警系统支持用户维度的设置,比如每次采集上报,监控系统都能检测出当前上报来源的具体用户,那么就可以为每个用户或用户组设置独立的告警阈值。

这样,系统可以区分不同用户的行为模式,并对频繁重试的个别用户进行特别处理。

可以根据历史数据和用户行为动态调整告警阈值。如果系统检测到某用户的失败请求频率高于正常行为,可以临时调高该用户的告警阈值。

当检测到用户频繁重试导致失败时,自动通知用户并提供问题解决方案,或要求他们停止重试,直到问题解决。