简介

使用 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
      创建负载过高告警
  • 一个用来模拟系统饱和的告警,这个告警发生的时候,负载过高就应该自动关闭,因为这两者都是关于 CPU load 的告警

    • Expression 中填入{your-host:mimic.cpu.load.last()}>0.5
    • Tags 中创建一个名为 CPU 的 Tag
      创建系统饱和告警

同时触发两个告警

接下来我们可以测试一下同时触发两个告警,操作很简单

$ 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 关闭了
    有 Correlation 提示的历史记录

参考


nevill
2 声望0 粉丝

引用和评论

0 条评论