我创建的item是这样的:
last("192.168.64.254:IfHCOutOctets[GigabitEthernet1/0/35]")+last("192.168.64.254:IfHCOutOctets[GigabitEthernet1/0/41]")+last("192.168.64.254:IfHCOutOctets[GigabitEthernet1/0/40]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/1]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/2]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/3]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/4]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/5]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/6]")+last("192.168.64.200:IfHCOutOctets[GigabitEthernet1/0/7]")
然后在
Graphs把这个item加上去,就好了。完美。
原文:
http://coolnull.com/3804.html
zabbix自定义key类型之计算(Calculated items)
说明:
计算类型的key定义主要是根据已定义过的key值来计算的。注意是已定义过的key值。
如这里我要创建一个计算linux服务器内存实际使用大小的监控项(计算方法为:vm.memory.size[total]-vm.memory.size[buffers]-vm.memory.size[cached]-vm.memory.size[free])。但zabbix默认的Items里并没有获取vm.memory.size[cached]这个key值。所以在查看Calculated类型的items时会出现Cannot evaluate function “last()”: item “coolnull:vm.memory.size[cached]” does not exist。要解决的话就需要自己再定义添加coolnull:vm.memory.size[cached]这个Items。
以下这边以获取算linux服务器内存实际使用大小来举例。
具体:
1、在模板中或是主机中选择监控项—->选择Create item
2、监控的名称和key按照其功能随便起一个名字(注:名字和key的名字一定要是英文格式的,包括你名字中包含的特殊字符),如:mem.realused,key的类型选择计算,这时会出现一个Formula,里面就是你的计算公式,如:
(last(“vm.memory.size[total]”)-last(“vm.memory.size[buffers]”)-last(“vm.memory.size[cached]”)-last(“vm.memory.size[free]”))
这个计算公式就是取各个key值的最后一次值做计算,注意公式中没有空格(经测试发现有时有空格之类的话提交的时候可能报错),计算的各个key都是同一类型的。
3、其他的选项没有什么特别,参照公式中其中一个key值的设置选项设置即可。
4、最后点保存提交,完成key的定义。
这边发现如果用(last(“vm.memory.size[total]”)-last(“vm.memory.size[buffers]”)-last(“vm.memory.size[cached]”)-last(“vm.memory.size[free]”))来减的话,还需要再定义vm.memory.size[buffers]、vm.memory.size[cached]值。因此我直接使用(last(“vm.memory.size[total]“)-last(“vm.memory.size[available]“))来计算更方便,不需要再定义buffers、cached。
附录:
常用的计算类型key定义时用的有以下几种公式(注意一下公式在写入Formula时要加一个小括号):
1、计算空闲磁盘空间的比例:100*last(“vfs.fs.size[/,free]”)/last(“vfs.fs.size[/,total]”)
2、计算10分钟主机出流量的平均值:avg(“Zabbix Server:net.if.out[eth0,bytes]”,600)
3、计算网卡总流量:last(“net.if.in[eth0,bytes]”)+last(“net.if.out[eth0,bytes]”)
4、计算进流量占网卡总流量的比例:100*last(“net.if.in[eth0,bytes]”)/(last(“net.if.in[eth0,bytes]”)+last(“net.if.out[eth0,bytes]”))
5、在计算项目中正确使用聚合条目,注意双引号如何被转义:last(“grpsum[”video”,”net.if.out[eth0,bytes]”,”last”,”0”]”)/last(“grpsum[”video”,”nginx_stat.sh[active]”,”last”,”0”]”)
6、计算多台主机出流量的和:last(“192.168.1.100:net.if.out[eth0,bytes]”)+last(“192.168.1.200:net.if.out[eth0,bytes]”)+last(“192.168.1.110:net.if.out[eth0,bytes]”)
这种计算是多台主机的,至于这个值放在哪个主机的监控项中都是一样的,只要是在此zabbix服务器端中。