屏蔽告警通知
抑制规则
抑制是指当警报发出后,停止重复发送由此警报引发其他错误的警报的机制。比如说,当主机Down掉后会导致该主机上的其他服务也Down掉;那么当AlertManager发送了一个“主机Down掉”的告警通知后,再接收到该主机上其他服务Down的告警,应该不再为这些告警发送通知。
在Alertmanager配置文件中,使用inhibit_rules
定义一组告警的抑制规则:
每一条抑制规则的具体配置如下:
比如定义如下的抑制规则:
如果接收到以下的“主机Down”告警,并且为该告警发送了一个通知
那么alertmanager就会创建一条抑制规则实例:
当接收到以下一条告警,该告警的标签匹配上了上面的抑制规则实例,那么该告警就会被抑制
疑问:如果主机x.x.x.x
一段时间后又起来了,那么alertmanager如何对其抑制的告警恢复发送呢?
临时静默
除了基于抑制机制可以控制告警通知的行为以外,用户或者管理员还可以直接通过Alertmanager的UI临时屏蔽特定的告警通知。通过定义标签的匹配规则(字符串或者正则表达式),如果新的告警通知满足静默规则的设置,则停止向receiver发送通知。
进入Alertmanager UI,点击"New Silence"显示如下内容,用户可以通过该UI定义新的静默规则的开始时间以及持续时间,通过Matchers部分可以设置多条匹配规则(字符串匹配或者正则匹配)。填写当前静默规则的创建者以及创建原因后,点击"Create"按钮即可:
静默规则创建成功后,Alertmanager会开始加载该规则并且设置状态为Pending,不过很快规则就会变成Active状态,我们可以通过页面查看:
上面的规则设置了两小时的持久时间,过了两个小时后,该规则就会变成Expired状态。
接着,我们拉搞主机的CPU使用率,触发告警,然后我们在prometheus里看到告警已经firing了
但是我们在alertmanager的alert页面却看不到有alert
我们点击进入这个静默规则的详情里面,可以看到它“影响”到的告警
如果我们想让这条静默规则失效,手动点击“Expire”即可:
Last updated