告警抑制

最近更新时间:2024-08-22 16:23:41

我的收藏

前言

为了避免由于相同问题导致的成百上千的相似告警通知带来额外的运维工作量,我们增加了告警抑制功能。告警抑制指的是若某种类型的告警被触发,则抑制与之相关的其他相似告警。例如:如果告警内容是某个集群无法访问,则可以配置 Inhibition 规则,静默与该集群相关的所有其他告警。

操作步骤

2. 在 Prometheus 实例列表中,单击实例 ID/名称
3. 进入 Prometheus 管理中心,在顶部导航栏中单击告警管理 > Inhibit Rules > 新建



4. 跳转到新建页面后,根据页面提示配置抑制规则,配置完点击保存即可。




参数说明

参数
说明
源(Source Matcher)
触发的告警,选择标签名称、条件、标签值。
目标(Target Matcher)
需要被静默的告警,选择标签名称、条件、标签值。
条件(Equal)
目标和源告警对于匹配条件中的标签名称必须具有相同的标签值,选择标签名称。
说明:
Inhibition 规则设置:当存在满足某种规则的告警(源)时,抑制规则会静默满足另一种规则的告警(目标)。目标和源告警对于匹配条件中的标签名称必须具有相同的标签值。
为了防止警报自我抑制,与规则的目标端和源端都匹配的告警不能被与目标端和源端都匹配的其他告警(包括其自身)抑制。因此,建议告警的源和目标规则设计上要确保不会有任何告警同时匹配源规则和目标规则。

示例

使用场景:服务器 CPU 高负载告警

场景描述:

在一个监控系统中,配置了两个告警:
告警 A:CPU 负载超过90%。
告警 B:系统响应时间超过500ms。
这两个告警都是由于同一原因引起的,即服务器 CPU 高负载,导致系统性能下降。 告警 A 的策略规则如下: alert: HighCPUUsage expr: avg(rate(cpu_usage_seconds_total[5m])) by (instance) > 0.9 告警 B 的策略规则如下: alert: HighResponseTime expr: avg(response_time_seconds) by (instance) > 0.5 则 Inhibition 规则配置方式如下:
源:alert=HighCPUUsage
目标:alert=HighResponseTime
匹配条件:instance

整体效果:

cpu_usage_seconds_total 指标在5分钟内的平均速率为95%,该指标的标签 instance=instanceX,则会触发告警 A,发送告警通知;
response_time_seconds 指标的平均值为0.8s,该指标的标签 instance=instanceX,则会触发告警 B,但由于匹配上了 Inhibition 规则,所以不会发送告警通知。