聚合计算是一种calculated item类型,允许通过Zabbix server从多个监控项收集信息,
然后根据所使用的聚合函数计算出一个聚合值。
聚合计算不需要在被监控的主机上运行任何agent。
要检索聚合值,请使用以下受支持的aggregate functions之一:avg
、max
、min
、sum
等。然后将foreach函数作为唯一参数添加,并使用其监控项过滤器来选择所需的监控项:
一个foreach函数(例如avg_foreach、count_foreach等)将为每个选定的监控项返回一个聚合值。监控项通过使用监控项过滤器(/host/key?[group="host group"]
)从监控项历史记录中选择。有关更多详细信息,请参见foreach functions。
如果某些监控项在请求的时间段内没有数据,则它们将在计算中被忽略。如果没有监控项具有数据,该函数将返回错误。
或者,您可以将多个监控项作为参数列出以进行聚合:
请注意,此处的function
必须是一个历史/趋势函数。
如果聚合结果为float值,并且聚合的监控项信息类型为Numeric(unsigned),则该值将被截断为integer。
支持在以下位置使用用户宏和低级别自动发现宏:
如果发生以下情况,聚合计算可能变为不支持:
用于聚合计算的键示例。
“MySQL 服务器”上主机组的总磁盘空间。
所有匹配 监控项 的 net.if.in[*] 在 主机 上的最新值之和。
“MySQL 服务器”上的平均处理器负载 主机组。
5分钟内每秒平均执行的queries数量,针对主机组“MySQL Servers”。
所有具有特定标签的多个 主机 组中的 主机 上的平均 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' 中未支持的 监控项 总数。
表达式(包括函数调用)不能用作历史数据、趋势或 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)) |
请注意,在如下表达式中:
无法保证方程的两个部分始终具有相同的值集。 当表达式的一部分被计算时,可能会有新的值在请求的时间段内到达,这样表达式的另一部分就会具有不同的值集。