这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

聚合计算

概览

在聚合计算中,Zabbix server(通过执行直接数据库查询)可以收集来自多个监控项的信息,以计算聚合,这取决于所使用的聚合函数。

聚合计算不需要在被监视的主机上运行任何代理。

若要定义聚合计算,请选择 Calculated 监控项类型。

  • 项目历史:

aggregate_function(function(/host/item,parameter),function(/host2/item2,parameter),...) - 一个 foreach 函数作为唯一参数: aggregate_function(foreach_function(/*/key?[group="host group"],timeperiod))

where:
       -   `聚合函数`是支持的聚合函数之一: avg,max,min,sum,等等.
       -    函数是受支持的 foreach 函数之一: avg _ foreach、 count _ foreach 等

Foreach 函数使用项筛选器处理多个项的历史记录,并返回一个值数组——每个项一个值。

注意: 如果聚合项类型的信息是 Numeric (无符号) ,则聚合结果生成的浮点值将被裁剪为整数。. 如果出现以下情况,则可能不支持聚合计算: - 没有找到任何引用的项(如果项目键不正确、项目不存在或所有包含的组都不正确,则可能发生这种情况) - 没有数据来计算函数

使用示例

用于聚合计算的键的示例

示例 1

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

sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
示例 2

主机上与 net.if.in[*]匹配的所有项的最新值之和。

sum(last_foreach(/host/net.if.in[*]))
示例 3

主机组“MySQL Servers”的平均处理器负载。

avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
示例 4

主机组“MySQL Servers”每秒平均查询次数5分钟平均值。

avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
示例 5

具有特定标记的多个主机组中所有主机的平均 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")]))
示例 6

用于计算整个主机组的监控项最新值总和。

sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"])) 
示例 7

主机组“Zabbix servers”中不支持的监控项总数。

sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Examples of correct/incorrect syntax

Expressions (including function calls) cannot be used as history, trend, or foreach function parameters. However, those functions themselves can be used in other (non-historical) function parameters.

Expression Example
Valid 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)))
Invalid sum(/host/key,10+2)
sum(/host/key, avg(10,2))
sum(/host/key,last(/host/key2))

Note that in an expression like:

sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))

it cannot be guaranteed that both parts of the equation will always have the same set of values. While one part of the expression is evaluated, a new value for the requested period may arrive and then the other part of the expression will have a different set of values.