聚合计算是一种calculated item 类型,允许通过Zabbix server从多个监控项收集信息, 然后根据所使用的聚合函数计算结果。
聚合计算监控项仅支持无符号integer和float值(信息类型)。
聚合计算不需要在被监控的主机上运行任何agent。
要获取聚合数据,您可以:
Note that function
here must be a history/trend function.
aggregate_function(foreach_function(/主机/key?[group="主机组"],timeperiod))
聚合函数是支持的aggregate functions之一:avg、max、min、sum等。
foreach函数(例如avg_foreach、count_foreach等)会为每个选中的监控项返回一个聚合值。通过使用监控项过滤器(/host/key?[group="host group"]
)从监控项历史记录中选择监控项。
如果某些监控项在请求的时间段内没有数据,则会在计算中被忽略。如果所有监控项都没有数据,函数将返回错误。
更多详情,请参阅foreach functions。
如果聚合结果为float值,且聚合监控项的信息类型为Numeric(unsigned),则该值将被截断为integer。
支持在以下位置使用用户宏和低级发现宏:
在以下情况下,聚合计算可能变为不支持:
聚合计算键值示例.
MySQL服务器组主机组的总磁盘空间.
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
匹配主机上net.if.in[*]的所有监控项最新值之和。
sum(last_foreach(/主机/net.if.in[*]))
MySQL服务器组主机组的平均处理器负载
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
每秒queries数的5分钟平均值(针对主机组) MySQL服务器
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
多个主机组中具有特定标签的所有主机的平均CPU负载。
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
基于最新监控项值对整个主机组求和的计算方法。
sum(last_foreach(//net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(//nginx_stat.sh[active]?[group="video"]))
主机组 'Zabbix servers'中不支持的监控项总数.
sum(last_foreach(/*/zabbix[主机,,items_unsupported]?[group="Zabbix servers"]))
表达式(包括函数调用)不能作为历史数据、趋势数据或foreach function参数使用。不过,这些函数本身可以用于其他(非历史相关的)函数参数中。
表达式 | 示例 |
---|---|
有效 | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100) max(avg(avg_foreach(/*/system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m))) |
无效 | sum(/host/key,10+2) sum(/host/key, avg(10,2)) sum(/host/key,last(/host/key2)) |
需要注意的是,在如下表达式中:
无法保证等式两边的值集始终保持一致。当表达式的一部分正在计算时,请求周期内可能会收到新值,从而导致表达式的另一部分具有不同的值集。