感谢张宇投稿!张宇,Zabbix高级认证专家。


1、Zabbix 6.0普通计算

计算监控项是创建虚拟数据源的一种方式。所有计算仅由 Zabbix server (目前6.0还是,rodmap中有考虑计算放到proxy上)完成。这些值是根据所使用的算术表达式定期计算的。

结果数据与任何其它监控项一样存储在 Zabbix 数据库中;历史和趋势值都被存储并且可以生成图形。

它的公式为简单计算项公式的语法:(这类功能6.0以前也有,表达式写法不同)

function(/host/key,<parameter1>,<parameter2>,...)

如果计算监控项是当前主机,语法为:

function(//key,<parameter1>,<parameter2>,...)

 

10分钟教会你使用Zabbix6.0新聚合算法_support


计算监控项特性:

10分钟教会你使用Zabbix6.0新聚合算法_zabbix_02

10分钟教会你使用Zabbix6.0新聚合算法_support_03

注意:在Zabbix 6.0中一个新的SERVER conf参数。(StartHistoryPollers 此进程实际处理计算和聚合算法数据的)

 多个运算公式写法:

将网口进出口流量合并:

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

计算出进口流量占用总流量百分比:

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


2、Zabbix 6.0新聚合算法

什么是聚合计算函数:

10分钟教会你使用Zabbix6.0新聚合算法_https_04

 

计算函数+foreach函数:

10分钟教会你使用Zabbix6.0新聚合算法_zabbix_05

Foreach函数从多个项目的历史记录返回聚合值:

10分钟教会你使用Zabbix6.0新聚合算法_https_06

 

foreach_function(/host pattern/item pattern?[host group or tag filter])

以下foreach支持的函数:

10分钟教会你使用Zabbix6.0新聚合算法_manual_07

常见使用方式举例:

主机组“MySQL Servers”的/磁盘总空间:

sum(last_foreach(/*/vfs.fs.size[/,total]?[group=“MySQL Servers”]))

数据流程如下:

10分钟教会你使用Zabbix6.0新聚合算法_support_08


单个设备所有网卡出口流量汇聚:

sum(last_foreach(//net.if.out[*]))

 

10分钟教会你使用Zabbix6.0新聚合算法_https_09


查询多个LLD对象数量汇聚:(比如说同实例MySQL库发现数量)

sum(exists_foreach(//mysql.dbsize[*,*,*]))


10分钟教会你使用Zabbix6.0新聚合算法_manual_10


多个主机组磁盘总量监控项汇聚:

sum(last_foreach(/*/vfs.fs.size[/,total]?[group=“Group A“ and group=“Group B”]))


10分钟教会你使用Zabbix6.0新聚合算法_manual_11


通过标签过滤汇聚不同主机的监控对象汇聚:

sum(last_foreach(/*/net.if.in[*]?[(group=“Servers A” or group=“Servers B”) and tag=“Service”]))


10分钟教会你使用Zabbix6.0新聚合算法_https_12

 参考文档:

https://www.zabbix.com/documentation/6.0/zh/manual/config/items/itemtypes/calculated