在工作中,我们创建trigger时经常需要把当前值和过去某一时间段内的平均值做比较,如果大于或者小于这个值则触发告警。


例如:创建公司订单量的告警,当前获取的订单量和过去半个月同一时间内十分钟内的平均值做比较,如果小于这个值的80%,则告警。

要配置这个trigger,我们必须获取订单量的监控项的过去两周同一时间十分钟内的平局值。假如现在是周日,下午16:00。 那么我们需要计算出上周日和上上周日15:50~16:00这一时间段内的订单平局值。然后计算这两个值的平均值,才是过去半个月同一时间10分钟内的平局值。


那么,我们如何取这个平局值呢?

这里我们可以用到Calculated类型的监控项。

使用Calculated类型的监控项,我们在某一个监控项的基础上创建其他的监控项。因此Calculated item是创建虚拟数据源的一种方法。所有的计算由zabbix server完成,跟zabbix agent无关。


Calculated item语法:

func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)

wKiom1ddHUqA0Ki4AAIXKGoNcf4368.png


使用示例:

1、计算“/”分区的可用磁盘进空间百分比

100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")


2、计算网卡eth0总的带宽

last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")


3、计算流入流量的百分比

100*last("net.if.in[eth0,bytes]")/(last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]"))


4、计算过去三个小时,同一时间10分钟内的CPU使用率的平局值

(avg("system.cpu.util[,idle]",10m,1h)+avg("system.cpu.util[,idle]",10m,2h)+avg("system.cpu.util[,idle]",10m,3h))/3