Zabbix触发器表达式详解(2)

tick 为Zabbix trapper类型,首先我们要定义一个类型为Zabbix trapper,key为tick的item。我们使用zabbix_sender定期发送数据给tick,如果在3分钟内还未收到 zabbix_sender发送来的数据,那么表达式返回一个true,与此同时触发器的值变为“PROBLEM”。

示例九---触发器名称:CPU activity at night time,使用函数 time():

{zabbix:system.cpu.load[all,avg1].min(5m)}>2&{zabbix:system.cpu.load[all,avg1].time(0)}>000000&{zabbix:system.cpu.load[all,avg1].time(0)}<060000

只有在凌晨0点到6点整,最近5分钟内cpu负载大于2,表达式返回true,触发器的状态变更为“problem”

示例十---触发器名称:Check if client local time is in sync with Zabbix server time,使用函数 fuzzytime():

{MySQL_DB:system.localtime.fuzzytime(10)}=0

主机MySQL_DB当前服务器时间如果与zabbix server之间的时间相差10秒以上,表达式返回true,触发器状态改变为“problem”

示例十一---触发器名称:Comparing average load today with average load of the same time yesterday (使用 time_shift 时间偏移量参数).

{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2

This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times.

Hysteresis(迟滞,滞后)

简单的说触发器状态转变为problem需要一个条件,从problem转变回来还需要一个条件才行。一般触发器只需要不满足触发器为problem条件即可恢复。明白了么?不明白就看例子吧。
有时候触发器需要使用不同的条件来表示不同的状态,举个官网很有趣的例子:机房温度正常稳定为15-20°,当温度超过20°,触发器值为problem,直到温度低于15°才会接触警报,异常会解除。别整这些没用的,我们看实例.

为了达到这个效果,我们需要使用如下触发器表达式:

示例1---触发器名称:Temperature in server room is too high

({TRIGGER.VALUE}=0&{server:temp.last(0)}>20)| ({TRIGGER.VALUE}=1&{server:temp.last(0)}<15)

如上有两个小括号,前面一个表示触发异常的条件,后面一个表达式表示解除异常的条件。

注意:宏变量 {TRIGGER.VALUE}将会返回当前触发器的值

示例2---触发器名称:Free disk space is too low

Problem: 最近5分钟剩余磁盘空间小于10GB。(异常)

Recovery: 最近10分钟磁盘空间大于40GB。(恢复)

简单说便是一旦剩余空间小于10G就触发异常,然后接下来剩余空间必须大于40G才能解除这个异常,就算你剩余空间达到了39G(不在报警条件里)那也是没用的,有意思不!

({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) | ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)

结尾

这篇文章很有必要细细读,很重要。

一些Zabbix相关教程集合

Ubuntu 14.04下Zabbix2.4.5 源码编译安装  .com/Linux/2015-05/117657.htm

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/35bad2c41de64c53070cb1e353efbd68.html