简介
使用 Zabbix 的时候我们经常会碰到一个监控项超出阈值,触发多个告警的情况。
例如一台交换机发生 unreachable 故障,会导致所有连接到这台交换机的主机发生 unreachable 告警,结果就是收到无数告警邮件。幸好,在 Zabbix 3.2 中提供了一个叫做 Event Correlation 的新功能来解决这个问题。
Event Correlation 分为两种
- 一种是在 Trigger 中配置
- 一种是在全局配置(Configuration -> Event correlation)
本文主要介绍第二种方式(因为第一种方式我还不知道如何使用 )
实验描述
我们将创建两个告警,一个在 CPU load 大于 0.2 时产生,一个在大于 0.5 时产生。
需要达到的效果是,在第二个告警产生的时候,第一个告警就会自动关闭。实验步骤
在主机上创建一个测试用监控项
-
在 zabbix_agentd.conf 中添加
UserParameter=mimic.cpu.load,cat /tmp/cpuload.log
- 在主机上创建对应的监控项 - item 为了快速看到效果,这里选择 Update interval 为 30
创建触发器 Trigger
-
一个用来模拟
负载过高
的告警- 在 Expression 中填入
{your-host:mimic.cpu.load.last()}>0.2
- 在 Tags 项里创建一个名为 CPU 的 Tag
- 在 Expression 中填入
-
一个用来模拟
系统饱和
的告警,这个告警发生的时候,负载过高
就应该自动关闭,因为这两者都是关于 CPU load 的告警- 在 Expression 中填入
{your-host:mimic.cpu.load.last()}>0.5
- 在 Tags 中创建一个名为 CPU 的 Tag
- 在 Expression 中填入
同时触发两个告警
接下来我们可以测试一下同时触发两个告警,操作很简单
$ echo 0.61 > /tmp/cpuload.org
会看到面板上同时显示两个告警
之后可以设置一个较小的 CPU load 值,以消除所有告警$ echo 0.01 > /tmp/cpuload.org
使用 Event Correlation 来消除负载过高
的告警
- 通过菜单项 Configuration -> Event correlation 创建新的 Event correlation rules
-
在 Condition 中添加
Old event tag = CPU
New event tag = CPU
- 在 Type of calculation 中选择
And
作为条件
- 在 Operations 标签页中选择 New operation 为
Close old events
并添加 -
触发
负载过高
告警,但不触发系统饱和
$ echo 0.25 > /tmp/cpuload.log
-
待面板上看到
负载过高
的告警以后触发系统饱和
$ echo 0.99 > /tmp/cpuload.log
- 观察面板,这个时候面板上只有一个告警
- 通过菜单项 Monitoring -> Problems,可以看到之前的
负载过高
报警被 correlation rule 关闭了