7 Berekende items

Overzicht

Met berekende items is het mogelijk om berekeningen te maken op basis van de waarden van andere items.

Berekeningen kunnen zowel gebruik maken van:

  • enkele waarden van individuele items
  • complexe filters om meerdere items te selecteren voor aggregaties (zie aggregatieberekeningen voor details)

Hierdoor zijn berekende items een manier om virtuele gegevensbronnen te creëren. Alle berekeningen worden alleen door de Zabbix-server uitgevoerd. De waarden worden periodiek berekend op basis van de gebruikte wiskundige expressie.

De resulterende gegevens worden opgeslagen in de Zabbix-database, net zoals bij elk ander item; zowel historische als trendwaarden worden opgeslagen en grafieken kunnen worden gegenereerd.

Als het resultaat van de berekening een zwevende-kommawaarde is, wordt deze afgerond naar een geheel getal als het berekende itemtype Numeriek (ongesigneerd) is.

Berekende items delen hun syntaxis met trigger uitdrukkingen. Vergelijkingen met tekenreeksen zijn toegestaan in berekende items. Berekende items kunnen worden aangeroepen door macro's of andere entiteiten, net als elk ander type item.

Om berekende items te gebruiken, kies het itemtype Berekend.

Configureerbare velden

De sleutel is een unieke identificatie voor het item (per host). Je kunt elke sleutelnaam maken met ondersteunde symbolen.

De definitie van de berekening moet worden ingevoerd in het Formule-veld. Er is feitelijk geen verbinding tussen de formule en de sleutel. De sleutelparameters worden op geen enkele manier in de formule gebruikt.

De syntaxis van een eenvoudige formule is:

functie(/host/sleutel,<parameter1>,<parameter2>,...)

waarbij:

functie Een van de ondersteunde functies: laatste, min, max, avg, count, enzovoort
host De host van het item dat wordt gebruikt voor de berekening.
De huidige host kan worden weggelaten (bijvoorbeeld functie(//sleutel,parameter,...)).
sleutel De sleutel van het item dat wordt gebruikt voor de berekening.
parameter(s) Parameters van de functie, indien nodig.

Gebruikersmacro's in de formule worden uitgebreid als ze worden gebruikt om naar een functieparameter, itemfilterparameter of een constante te verwijzen. Gebruikersmacro's worden NIET uitgebreid als ze verwijzen naar een functie, hostnaam, item-sleutel, parameter van de item-sleutel of operator.

Een meer complexe formule kan een combinatie van functies, operators en haakjes gebruiken. Je kunt alle functies en operators gebruiken die worden ondersteund in triggeruitdrukkingen. De logica en operatorprioriteit zijn precies hetzelfde.

In tegenstelling tot triggeruitdrukkingen verwerkt Zabbix berekende items op basis van het update-interval van het item, niet bij het ontvangen van een nieuwe waarde.

Alle items waarnaar wordt verwezen door geschiedenisfuncties in de formule van het berekende item moeten bestaan en gegevens verzamelen. Ook, als je de item-sleutel van een gerefereerd item wijzigt, moet je handmatig eventuele formules met die sleutel bijwerken.

Een berekend item kan in verschillende gevallen niet ondersteund worden:

  • gerefereerd(e) item(s)
    • wordt niet gevonden
    • is uitgeschakeld
    • behoort tot een uitgeschakelde host
    • wordt niet ondersteund (behalve met de functie nodata() en operators met onbekende waarden)
  • geen gegevens om een functie te berekenen
  • deling door nul
  • onjuiste syntaxis gebruikt

Gebruik voorbeelden

Voorbeeld 1

Het berekenen van het percentage vrije schijfruimte op '/'.

Gebruik van de functie last:

100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])

Zabbix zal de meest recente waarden voor vrije en totale schijfruimte nemen en het percentage berekenen volgens de opgegeven formule.

Voorbeeld 2

Het berekenen van een 10-minuten gemiddelde van het aantal waarden verwerkt door Zabbix.

Gebruik van de functie avg:

avg(/Zabbix Server/zabbix[wcache,values],10m)

Let op dat het uitgebreide gebruik van berekende items met lange tijdsperiodes invloed kan hebben op de prestaties van de Zabbix-server.

Voorbeeld 3

Het berekenen van de totale bandbreedte op eth0.

Som van twee functies:

last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Voorbeeld 4

Het berekenen van het percentage binnenkomend verkeer.

Meer complexe uitdrukking:

100*last(//net.if.in[eth0,bytes])/(laatste(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))

Zie ook: Voorbeelden van aggregaatberekeningen