1 Geaggregeerde berekeningen

Overzicht

Agregatieberekeningen zijn een berekend item type waarmee informatie van verschillende items door de Zabbix-server kan worden verzameld en vervolgens een aggregaat kan worden berekend, afhankelijk van de gebruikte aggregaatfunctie.

Alleen niet-ondertekende gehele getallen en drijvende komma-waarden (type informatie) worden ondersteund voor aggregerende berekeningitems.

Voor aggregatieberekeningen is geen agent nodig die op de te monitoren host draait.

Syntax

Om totalen op te halen, kun je:

  • meerdere items voor aggregatie vermelden:
aggregate_function(functie(/host/sleutel,parameter),functie(/host2/sleutel2,parameter),...)

Merk op dat functie hier een geschiedenis/trend functie moet zijn.

  • de foreach functie gebruiken, als enige parameter, en de itemfilter ervan om de vereiste items te selecteren:
aggregate_function(foreach_functie(/host/sleutel?[groep="hostgroep"],tijdsperiode))

De aggregate functie is een van de ondersteunde aggregaatfuncties: gem, max, min, som, enz.

Een foreach functie (bijv. gem_foreach, tel_foreach, enz.) geeft één geaggregeerde waarde voor elk geselecteerd item. Items worden geselecteerd door de itemfilter te gebruiken (/host/sleutel?[groep="hostgroep"]), uit itemgeschiedenis.

Als sommige van de items geen gegevens hebben voor de gevraagde periode, worden ze niet meegenomen in de berekening. Als er geen items gegevens hebben, zal de functie een fout retourneren.

Voor meer details, zie foreach functies.

Als het geaggregeerde resultaat een zwevende-komma-waarde oplevert, wordt deze afgekapt tot een geheel getal als het geaggregeerde itemtype van informatie Numeriek (ongesigneerd) is.

Een aggregatieberekening kan niet meer worden ondersteund als:

  • geen van de verwezen items wordt gevonden (wat kan gebeuren als de itemsleutel onjuist is, geen van de items bestaat of alle opgenomen groepen zijn onjuist)
  • geen gegevens beschikbaar zijn om een functie te berekenen

Gebruiksvoorbeelden

Voorbeelden van sleutels voor aggregatieberekeningen.

Voorbeeld 1

Totale schijfruimte van hostgroep 'MySQL Servers'.

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

Som van de laatste waarden van alle items die overeenkomen met net.if.in[*] op de host.

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

Gemiddelde processerbelasting van hostgroep 'MySQL Servers'.

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

Gemiddelde van 5 minuten van het aantal queries per seconde voor de hostgroep 'MySQL Servers'.

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

Gemiddelde CPU-belasting op alle hosts in meerdere hostgroepen die specifieke tags hebben.

avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Voorbeeld 6

Berekening die wordt gebruikt op de som van de meest recente itemwaarden van een hele hostgroep.

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

Het totale aantal niet-ondersteunde items in de hostgroep '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.