In aggregate calculations information from several items may be collected by Zabbix server (by doing direct database queries) to calculate an aggregate, depending on the aggregate function used.
Aggregate calculations do not require any agent running on the host being monitored.
To define aggregate calculations, select the Calculated item type.
Aggregates can be retrieved by working with either:
where:
aggregate_function
is one of the supported aggregate functions: avg, max, min, sum, etc.foreach_function
is one of the supported foreach functions: avg_foreach, count_foreach, etc.Foreach functions use an item filter, to work with the history of multiple items, and return an array of values - one for each item.
If the aggregate results in a float value it will be trimmed to an integer if the aggregated item type of information is Numeric (unsigned).
An aggregate calculation may become unsupported if:
Examples of keys for aggregate calculations.
Total disk space of host group 'MySQL Servers'.
Sum of latest values of all items matching net.if.in[*] on the host.
Average processor load of host group 'MySQL Servers'.
5-minute average of the number of queries per second for host group 'MySQL Servers'.
Average CPU load on all hosts in multiple host groups that have the specific tags.
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Calculation used on the latest item value sums of a whole host group.
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
The total number of unsupported items in host group 'Zabbix servers'.
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:
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.