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 gegevens te verkrijgen voor aggregatie, kunt u:

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

Merk op dat functie hier een geschiedenis-/trendfunctie moet zijn.

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

De aggregaatfunctie is een van de ondersteunde aggregaatfuncties: avg, max, min, sum, etc.

Een foreach functie (bijv. avg_foreach, count_foreach, enz.) retourneert één geaggregeerde waarde voor elk geselecteerd item. Items worden geselecteerd met behulp van de itemfilter (/host/sleutel?[groep="hostgroep"]), uit de itemgeschiedenis.

Als sommige van de items geen gegevens hebben voor de gevraagde periode, worden ze genegeerd 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 drijvendekommawaarde is, wordt deze afgerond naar een geheel getal als het geaggregeerde itemtype Numeriek (niet-ondertekend) is.

Een aggregatieberekening kan niet ondersteund worden als:

  • geen van de gerefereerde items gevonden wordt (wat kan gebeuren als de itemsleutel onjuist is, geen van de items bestaat of alle opgenomen groepen onjuist zijn)
  • er geen gegevens 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"]))
Voorbeelden van juiste/ongeldige syntaxis

Uitdrukkingen (inclusief functieoproepen) kunnen niet worden gebruikt als parameters voor geschiedenis, trends of foreach functies. Echter, die functies zelf kunnen worden gebruikt in andere (niet-historische) functieparameters.

Uitdrukking Voorbeeld
Geldig 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)))
Ongeldig sum(/host/key,10+2)
sum(/host/key, avg(10,2))
sum(/host/key,last(/host/key2))

Merk op dat in een uitdrukking als:

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

niet kan worden gegarandeerd dat beide delen van de vergelijking altijd dezelfde set waarden zullen hebben. Terwijl een deel van de uitdrukking wordt geëvalueerd, kan er een nieuwe waarde voor de gevraagde periode binnenkomen en dan zal het andere deel van de uitdrukking een andere set waarden hebben.