跳转到主要内容
数据库挂了,依赖它的十个服务都在报错。这时值班的人只需要知道数据库的事,其余的告警只会把他的手机打爆。抑制规则说的就是这件事:符合「源」条件的事件在时,符合「目标」条件、指定标签取值相同的事件,通知压着。 被压住的事件照常开启和记录,页面上看得见,只是通知不发、升级不往下走。源事件恢复后,目标事件还开着的就照常通知。 打开 告警 → 抑制。查看需要 alerts.inhibitions.read,新建、修改和删除需要 alerts.inhibitions.manage。

抑制和静默的区别

两者都只压通知和升级,都不影响事件本身、状态页和工单。

新建规则

点击 新建抑制规则: 标签条件的写法和静默策略一样,所有条件都要命中,=~ 与 !~ 是整串匹配的正则表达式。除了事件的标签,还认这三个:
  • service、host:事件没带这个标签时,取它受影响的服务、主机;
  • alert.rule_id:开事件的规则或告警来源的 ID,可以写「规则 A 压住规则 B」。
写好后点击 算一遍,用这条规则(不用先保存)算一遍此刻进行中的事件,列出谁会被谁压住。

常见的写法

同一个服务上,严重的压住次要的。 这是新建规则的默认样子:
  • 这些标签要相同:service
  • 源事件要比目标事件严重:打开
数据库挂了,不用再报依赖它的服务。 不论严重度:
  • 源事件的标签条件:service = database
  • 目标事件的标签条件:tier = api
  • 这些标签要相同:region(只压同一个地域的)
  • 源事件要比目标事件严重:关闭

怎么判断

抑制由升级派发每一轮(默认 10 秒)判定,结果写在事件上。为了保证被压住的事件,上游总有一个真的会通知人的事件,判定时:
  • 被静默的事件不当源。 它自己没人收到,再压别的就谁都收不到了。
  • 已确认的事件照样当源。 有人在处理了。
  • 并入别的事件的事件两边都不算。
  • 有人手动开的事件不会被压,但可以压别的。
  • 压可以串起来。 A 压 B、B 压 C 时,B 和 C 都不通知,由 A 通知。
  • 互相压的事件留下一个。 两条规则写成了 A 压 B、B 压 A 时,严重的(一样严重时先开的)照常通知。

时间上的两个缓冲

目标事件先等。 症状常常比根因先报出来:业务的错误率先过线,数据库那条规则下一轮才评估。可能被压的事件开启时,它的通知先等 目标事件先等 这么久,这期间源事件来了就压住,没来就照常通知。设成 0 也会等 15 秒:抑制由下一轮派发判定,第一条通知不能抢在它前面。 只有可能被压的事件才等:more_severe_only 打开时最严重的事件不等,缺 这些标签要相同 里的标签的事件不等。 源事件恢复后再压。 根因恢复时症状也快好了,不必再叫一遍人。源事件恢复后,目标事件还压这么久;期间又有源事件来了就接着压。到点还开着的事件,压着的通知才发出。

通知怎么处理

在页面上看

  • 事件列表:被压的事件在摘要行写 已抑制;列表多一个 已抑制 视图,只在有被压的事件时出现。
  • 事件详情:写明因为哪个事件、哪条规则压着,源事件的名字可以点开。还在等的事件写明等到什么时候。旁边的 照常通知 放开这个事件:压着的通知马上发出,之后不再被抑制。放开要 alerts.incidents.update,记进时间线和审计日志。
  • 时间线:开始被压、抑制结束(源事件恢复、规则改了或删了、有人放开)各记一条。
  • 规则列表:一条规则的事件都被压着时,状态是 触发中(已抑制)。
  • 抑制页:每条规则写明此刻压着几个事件。删除这样的规则时,确认框写明它们会马上通知。
立即升级、转派、增派也算人要叫人,这个事件顺带放开。

多个集群

抑制规则随跨集群联邦同步,各集群按自己的事件判定:一个集群的事件不会压住另一个集群的事件。

抑制 API

最后修改于 2026年10月31日