[comment]: # ({b8c65ad1-b8c65ad1})
# 7 Aprēķinātie vienumi

[comment]: # ({/b8c65ad1-b8c65ad1})

[comment]: # ({b61f1d79-43ebe58c})
### 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](/manual/config/triggers/expression).

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:

1. Norādīt vienumus formulā.
2. Veikt [datu agregāciju](#data-aggregations), 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.

[comment]: # ({/b61f1d79-43ebe58c})

[comment]: # ({d549a268-ddc35784})
### Konfigurējamie lauki

Lai izmantotu aprēķinātos vienumus, izvēlieties vienuma tipu **Calculated**.

![](../../../../../assets/en/manual/config/items/itemtypes/calculated_item.png){width="600"}

**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.

[comment]: # ({/d549a268-ddc35784})

[comment]: # ({d529721d-f105da1a})
### 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](/manual/config/triggers/expression#functions): last, min, max, avg, count utt.|
|`host`|vienuma hosts, kas tiek izmantots aprēķinam.<br>Pašreizējo hostu var izlaist (t.i., kā `function(//key,parameter,...)`).|
|`key`|vienuma atslēga, kas tiek izmantota aprēķinam.<br>Vienumi, kas atgriež vērtības ar bināro vai JSON [datu tipu](/manual/config/items/item#configuration), netiek atbalstīti.<br>Ja maināt atsauktā vienuma atslēgu, atslēga formulā ir jāatjaunina manuāli.<br>Visiem vienumiem, uz kuriem atsaucas vēstures funkcijas, ir jāeksistē un jāvāc dati.|
|`parameter(s)`|Funkcijas parametri, ja nepieciešams.<br>Tiek atbalstīti [laika sufiksi](/manual/appendix/suffixes#time-suffixes) un [atmiņas lieluma sufiksi](/manual/appendix/suffixes#memory-size-suffixes).|

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ē](#total-traffic-on-interface)
-   [(2) Brīvās diska vietas procentuālā daļa](#percentage-of-free-disk-space)
-   [(3) Ienākošās datplūsmas procentuālā daļa](#percentage-of-incoming-traffic)
-   [(4) Apstrādāto vērtību vidējais skaits](#average-number-of-processed-values)

Dažus mainīgos formulai var nodot ar [lietotāja makrosiem](/manual/config/macros/user_macros).  
Ņ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](/manual/config/triggers/expression#operators) ar
        nezināmām vērtībām)
-   nav datu funkcijas aprēķināšanai
-   dalīšana ar nulli
-   izmantota nepareiza sintakse

[comment]: # ({/d529721d-f105da1a})

[comment]: # ({69899e6b-63d83a0c})
### 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](/manual/config/triggers/expression/aggregate): `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:

```default
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](/manual/config/triggers/expression/aggregate/foreach).

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:

```default
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](#total-incoming-traffic-for-host)
-   [(6) Kopējā diska vieta grupai](#total-disk-space-for-group)
-   [(7) Vidējā procesora slodze grupai](#average-processor-load-for-group)
-   [(8) Vidējā procesora slodze grupai un birkai](#average-processor-load-for-group-and-tag)
-   [(9) Vidējais apstrādāto vērtību skaits](#average-number-of-processed-values)
-   [(10) Vidējais vaicājumu skaits grupai](#average-number-of-queries-for-group)
-   [(11) Kopējais veiksmīgo DNS pārbaužu skaits](#total-number-of-successful-dns-checks)
-   [(12) Kopējais neatbalstīto vienumu skaits grupai](#total-number-of-unsupported-items-for-group)
-   [(13) Saskarnes statistika grupai](#interface-stats-for-group)

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

[comment]: # ({/69899e6b-63d83a0c})

[comment]: # ({fdfb8008-82c22f4f})
### Aprēķināto vienumu piemēri

[comment]: # ({/fdfb8008-82c22f4f})

[comment]: # ({a3322852-5d068733})
##### (1) Kopējā datplūsma saskarnē

```default
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
```

Aprēķināt kopējo joslas platumu uz eth0.

[comment]: # ({/a3322852-5d068733})

[comment]: # ({3ed08673-426ab71a})
##### (2) Brīvās diska vietas procentuālā daļa

```default
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.

[comment]: # ({/3ed08673-426ab71a})

[comment]: # ({0bc6aaac-f8b53af1})
##### (3) Ienākošās datplūsmas procentuālā daļa

```default
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.

[comment]: # ({/0bc6aaac-f8b53af1})

[comment]: # ({537f0855-77bcdfd9})
##### (4) Apstrādāto vērtību vidējais skaits

```default
avg(/Zabbix server/zabbix[wcache,values],10m)
```

Aprēķina 10 minūšu vidējo Zabbix apstrādāto vērtību skaitu.

[comment]: # ({/537f0855-77bcdfd9})

[comment]: # ({8d1ddbe3-3182672a})
##### (5) Kopējā ienākošā datplūsma hostam

```default
sum(last_foreach(/host/net.if.in[*]))
```

Aprēķina visu hosta vienumu, kas atbilst `net.if.in[*]`, kopējo summu.

[comment]: # ({/8d1ddbe3-3182672a})

[comment]: # ({e432a117-874bcf94})
##### (6) Kopējā diska vieta grupai

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

Aprēķināt kopējo diska vietu visiem `MySQL Servers`.

[comment]: # ({/e432a117-874bcf94})

[comment]: # ({9125c3ca-cdf2da8b})
##### (7) Vidējā procesora slodze grupai

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

Aprēķināt vidējo procesora slodzi visiem `MySQL Servers`.

[comment]: # ({/9125c3ca-cdf2da8b})

[comment]: # ({fca20d64-0233edd3})
##### (8) Vidējā procesora slodze grupai un birkai

```default
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.

[comment]: # ({/fca20d64-0233edd3})

[comment]: # ({89b53708-db9c8fce})
##### (9) Vidējais vaicājumu skaits grupai

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

Aprēķināt 5 minūšu vidējo vaicājumu skaitu sekundē grupai `MySQL Servers`.

[comment]: # ({/89b53708-db9c8fce})

[comment]: # ({7b156968-9e0ef2e9})
##### (10) Kopējais veiksmīgo DNS pārbaužu skaits

```default
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`](/manual/config/items/itemtypes/zabbix_agent#net.dns) ir trīs parametri: ip, name, type).

[comment]: # ({/7b156968-9e0ef2e9})

[comment]: # ({ecf9b800-3e9404a6})
##### (11) Kopējais neatbalstīto vienumu skaits grupai

```default
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
```

Aprēķina kopējo neatbalstīto vienumu skaitu priekš `Zabbix servers`.

[comment]: # ({/ecf9b800-3e9404a6})

[comment]: # ({b2771cd7-30448f5d})
##### (12) Saskarnes statistika grupai

```default
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`.

[comment]: # ({/b2771cd7-30448f5d})

[comment]: # ({c3fceab6-f094da29})
### Pareizas/nepareizas sintakses piemēri

Izteiksmes (tostarp funkciju izsaukumus) nevar izmantot kā vēstures, tendenču vai foreach [funkciju](/manual/appendix/functions) 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)`<br><br>`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)`<br><br>`sum(/host/key, avg(10,2))`<br><br>`sum(/host/key,last(/host/key2))`|

Ņemiet vērā, ka tādā izteiksmē kā:

```default
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.

[comment]: # ({/c3fceab6-f094da29})
