- 7 Aprēķinātie vienumi
- Pārskats
- Konfigurējamie lauki
- Vienkāršas aprēķina formulas sintakse
- Datu agregācijas
- Aprēķināto vienumu piemēri
- (1) Kopējā datplūsma saskarnē
- (2) Brīvās diska vietas procentuālā daļa
- (3) Ienākošās datplūsmas procentuālā daļa
- (4) Apstrādāto vērtību vidējais skaits
- (5) Kopējā ienākošā datplūsma hostam
- (6) Kopējā diska vieta grupai
- (7) Vidējā procesora slodze grupai
- (8) Vidējā procesora slodze grupai un birkai
- (9) Vidējais vaicājumu skaits grupai
- (10) Kopējais veiksmīgo DNS pārbaužu skaits
- (11) Kopējais neatbalstīto vienumu skaits grupai
- (12) Saskarnes statistika grupai
- Pareizas/nepareizas sintakses piemēri
7 Aprēķinātie vienumi
Pārskats
Šis vienuma tips ļauj veikt aprēķinus ar metrikām, kas jau pastāv. Aprēķinātais vienums pats par sevi neievāc nekādus datus.
Piemēram, jūs varat vēlēties:
- Saskaitīt divas vērtības.
- Aprēķināt vairāku vienumu vērtību vidējo.
- Aprēķināt kopējo vērtību vienumu grupai.
Iegūtā vērtība tiek saglabāta Zabbix datubāzē tāpat kā jebkuram citam vienumam; tiek saglabātas gan vēstures, gan tendenču vērtības, un var tikt ģenerēti grafiki.
Aprēķins ir balstīts uz formulu. Formulas sintakse ir kopīga ar trigeru izteiksmēm.
Patiesībā ir iespējams saglabāt trigerus vienkāršus, sarežģīto datu apstrādes loģiku ievietojot aprēķinātajā vienumā — un pēc tam atsaukties uz aprēķināto vienumu trigerī, izmantojot vienuma atslēgu.
Pastāv divas iespējas, kā norādīt datu avotu aprēķiniem:
- Norādīt vienumus formulā.
- Veikt datu agregāciju, pamatojoties uz filtru, kas atlasa vienumus.
Otrā iespēja ļauj aprēķināt grupu vidējās vērtības, kopsummas utt.
Visi aprēķini tiek veikti Zabbix serverī; starpniekserveris vai aģenti tajos vispār netiek iesaistīti. Ņemiet vērā, ka plaša aprēķināto vienumu izmantošana ar gariem laika periodiem var ietekmēt servera veiktspēju.
Konfigurējamie lauki
Lai izmantotu aprēķinātos vienumus, izvēlieties vienuma tipu Calculated.

Atslēga ir unikāls vienuma identifikators (katram hostam). Varat izveidot jebkādu atslēgas nosaukumu, izmantojot atbalstītos simbolus. Atslēga ļauj atsaukties uz aprēķināto vienumu trigeros.
Aprēķina definīcija jāievada laukā Formula.
Starp formulu un atslēgu nav saistības. Atslēgas parametri formulā nekādā veidā netiek izmantoti.
Atšķirībā no trigeru izteiksmēm, Zabbix apstrādā aprēķinātos vienumus atbilstoši vienuma atjaunināšanas intervālam, nevis saņemot jaunu vērtību.
Ņemiet vērā: ja kā informācijas tipu izvēlaties Numeric (unsigned) un aprēķina rezultāts ir peldošā komata vērtība, tā tiek apgriezta līdz veselam skaitlim.
Vienkāršas aprēķina formulas sintakse
Vienkāršas formulas sintakse ir:
function(/host/key,<parameter1>,<parameter2>,...)
kur:
| Element | Description |
|---|---|
function |
Viena no atbalstītajām funkcijām: last, min, max, avg, count utt. |
host |
vienuma hosts, kas tiek izmantots aprēķinam. Pašreizējo hostu var izlaist (t.i., kā function(//key,parameter,...)). |
key |
vienuma atslēga, kas tiek izmantota aprēķinam. Vienumi, kas atgriež vērtības ar bināro vai JSON datu tipu, netiek atbalstīti. Ja maināt atsauktā vienuma atslēgu, atslēga formulā ir jāatjaunina manuāli. Visiem vienumiem, uz kuriem atsaucas vēstures funkcijas, ir jāeksistē un jāvāc dati. |
parameter(s) |
Funkcijas parametri, ja nepieciešams. Tiek atbalstīti laika sufiksi un atmiņas lieluma sufiksi. |
Sarežģītāka formula var izmantot funkciju, operatoru un iekavu kombināciju.
Skatiet aprēķināto vienumu formulu piemērus:
- (1) Kopējā datplūsma saskarnē
- (2) Brīvās diska vietas procentuālā daļa
- (3) Ienākošās datplūsmas procentuālā daļa
- (4) Apstrādāto vērtību vidējais skaits
Dažus mainīgos formulai var nodot ar lietotāja makrosiem.
Ņemiet vērā, ka lietotāja makrosi:
- tiks atrisināti — ja tie tiek izmantoti, lai norādītu funkcijas parametru, vienuma filtra parametru vai konstanti.
- netiks atrisināti — ja tie norāda uz funkciju, hosta nosaukumu, vienuma atslēgu, vienuma atslēgas parametru vai operatoru.
Ir atļauta salīdzināšana ar virknēm.
Ja kešatmiņā nav nesenu datu un funkcijā nav definēts vaicājuma periods, Zabbix pēc noklusējuma meklēs datubāzē vēsturiskās vērtības līdz pat vienai nedēļai pagātnē.
Aprēķināts vienums var kļūt neatbalstīts vairākos gadījumos:
- atsauktais vienums
- nav atrasts
- ir atspējots vai pieder atspējotam hostam
- nav atbalstīts (izņemot ar nodata() funkciju un operatoriem ar nezināmām vērtībām)
- nav datu funkcijas aprēķināšanai
- dalīšana ar nulli
- izmantota nepareiza sintakse
Datu agregācijas
Datu agregācijas ir balstītas uz filtru, kas atlasa vairākus vienumus. Datu agregācijas arī ir aprēķināto vienumu tips, taču formulā tiek izmantota nedaudz atšķirīga sintakse.
Lai iegūtu agregētās vērtības, izmantojiet vienu no atbalstītajām agregācijas funkcijām: avg, max, min, sum utt.
Pēc tam pievienojiet funkciju foreach kā vienīgo parametru un tās vienumu filtru, lai atlasītu nepieciešamos vienumus:
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
Funkcija foreach (piemēram, avg_foreach, count_foreach utt.) atgriež vienu agregētu vērtību katram atlasītajam vienumam.
Vienumi tiek atlasīti, izmantojot vienumu filtru (/host/key?[group="host group"]) no vienumu vēstures.
Plašāku informāciju skatiet sadaļā foreach functions.
Ja dažiem vienumiem pieprasītajā periodā nav datu, tie aprēķinā netiek ņemti vērā. Ja datu nav nevienam vienumam, funkcija atgriezīs kļūdu.
Alternatīvi varat norādīt vairākus vienumus kā agregācijas parametrus:
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
Ņemiet vērā, ka function šeit jābūt vēstures/tendenču funkcijai.
Skatiet agregēto aprēķinu piemērus:
- (5) Kopējā ienākošā datplūsma hostam
- (6) Kopējā diska vieta grupai
- (7) Vidējā procesora slodze grupai
- (8) Vidējā procesora slodze grupai un birkai
- (9) Vidējais apstrādāto vērtību skaits
- (10) Vidējais vaicājumu skaits grupai
- (11) Kopējais veiksmīgo DNS pārbaužu skaits
- (12) Kopējais neatbalstīto vienumu skaits grupai
- (13) Saskarnes statistika grupai
Lietotāja makrosi un zema līmeņa atklāšanas makrosi tiek atbalstīti šeit:
- vienuma atslēgas parametros
- funkciju parametros
- filtra nosacījumos (hostu grupas nosaukums un birkas nosaukums)
- izteiksmes konstantēs
Agregētais aprēķins var kļūt neatbalstīts, ja:
- nav atrasts neviens no atsauktajiem vienumiem (tas var notikt, ja vienuma atslēga ir nepareiza, neviens no vienumiem neeksistē vai visas iekļautās grupas ir nepareizas)
- funkcijas aprēķinam nav datu
Aprēķināto vienumu piemēri
(1) Kopējā datplūsma saskarnē
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Aprēķināt kopējo joslas platumu uz eth0.
(2) Brīvās diska vietas procentuālā daļa
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
Zabbix ņems jaunākās brīvās un kopējās diska vietas vērtības (uz /) un aprēķinās procentuālo daļu saskaņā ar doto formulu.
(3) Ienākošās datplūsmas procentuālā daļa
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
Aprēķina ienākošās datplūsmas procentuālo daļu no kopējās datplūsmas.
(4) Apstrādāto vērtību vidējais skaits
avg(/Zabbix server/zabbix[wcache,values],10m)
Aprēķina 10 minūšu vidējo Zabbix apstrādāto vērtību skaitu.
(5) Kopējā ienākošā datplūsma hostam
sum(last_foreach(/host/net.if.in[*]))
Aprēķina visu hosta vienumu, kas atbilst net.if.in[*], kopējo summu.
(6) Kopējā diska vieta grupai
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Aprēķināt kopējo diska vietu visiem MySQL Servers.
(7) Vidējā procesora slodze grupai
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Aprēķināt vidējo procesora slodzi visiem MySQL Servers.
(8) Vidējā procesora slodze grupai un birkai
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Aprēķināt vidējo CPU slodzi visos hostos vairākās hostu grupās, kuriem ir noteiktas birkas.
(9) Vidējais vaicājumu skaits grupai
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Aprēķināt 5 minūšu vidējo vaicājumu skaitu sekundē grupai MySQL Servers.
(10) Kopējais veiksmīgo DNS pārbaužu skaits
sum(last_foreach(/*/net.dns[*,*,*]))
Aprēķiniet kopējo veiksmīgo DNS pārbaužu skaitu visos hostos.
Parādītā vienuma forma ir net.dns[192.0.2.0,example.com,A] kā piemērs vienai no iespējamajām atslēgām.
Ņemiet vērā, ka aizstājējzīmēm ir jāatbilst parametru skaitam atslēgā (šeit net.dns ir trīs parametri: ip, name, type).
(11) Kopējais neatbalstīto vienumu skaits grupai
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Aprēķina kopējo neatbalstīto vienumu skaitu priekš Zabbix servers.
(12) Saskarnes statistika grupai
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Aprēķināt saskarnes statistiku grupai video.
Pareizas/nepareizas sintakses piemēri
Izteiksmes (tostarp funkciju izsaukumus) nevar izmantot kā vēstures, tendenču vai foreach funkciju parametrus. Tomēr pašas šīs funkcijas var izmantot citu (ne-vēsturisko) funkciju parametros.
| Izteiksme | Piemērs |
|---|---|
| Derīgs | 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))) |
| Nederīgs | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
Ņemiet vērā, ka tādā izteiksmē kā:
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
nav iespējams garantēt, ka abām vienādojuma daļām vienmēr būs viens un tas pats vērtību kopums. Kamēr tiek novērtēta viena izteiksmes daļa, pieprasītajam periodam var pienākt jauna vērtība, un tad otrai izteiksmes daļai būs atšķirīgs vērtību kopums.