[comment]: # ({510ac9cc-510ac9cc})
# 2 Trigeris izteiksme

[comment]: # ({/510ac9cc-510ac9cc})

[comment]: # ({07d50a02-473bcd5e})
#### Pārskats

Izteiksmes, kas tiek izmantotas [trigeros](/manual/config/triggers), ir ļoti elastīgas.
Tās var izmantot, lai izveidotu sarežģītus loģiskus testus par uzraudzītajiem statistikas datiem.

Vienkārša izteiksme izmanto **funkciju**, kas tiek lietota vienumam ar noteiktiem parametriem.
Funkcija atgriež rezultātu, kas tiek salīdzināts ar slieksni, izmantojot operatoru un konstanti.

Vienkāršas, noderīgas izteiksmes sintakse ir `function(/host/key,parameter)<operator><constant>`.

Piemēram:

```default
min(/Zabbix server/net.if.in[eth0,bytes],5m)>100K
```

izraisīs trigeri, ja saņemto baitu skaits pēdējo piecu minūšu laikā vienmēr bija virs 100 kilobaitiem.

Lai gan sintakse ir tieši tāda pati, no funkcionālā viedokļa ir divu veidu trigeru izteiksmes:

-   problēmas izteiksme - nosaka problēmas nosacījumus
-   atjaunošanas izteiksme (neobligāta) - nosaka papildu nosacījumus problēmas atrisināšanai

Definējot tikai problēmas izteiksmi, šī izteiksme tiks izmantota gan kā problēmas slieksnis, gan kā problēmas atjaunošanas slieksnis.
Tiklīdz problēmas izteiksme tiek novērtēta kā TRUE, ir problēma.
Tiklīdz problēmas izteiksme tiek novērtēta kā FALSE, problēma ir atrisināta.

Definējot gan problēmas izteiksmi, gan papildu atjaunošanas izteiksmi, problēmas atrisināšana kļūst sarežģītāka: problēmas izteiksmei ir jābūt ne tikai FALSE, bet arī atjaunošanas izteiksmei ir jābūt TRUE.
Tas ir noderīgi, lai izveidotu [histerēzi](#hysteresis) un izvairītos no trigeru svārstīšanās.

:::noteclassic
Nav produktīvi izmantot {TRIGGER.VALUE} makro atjaunošanas izteiksmē, jo šī izteiksme tiek novērtēta tikai tad, kad trigeris ir "Problem" stāvoklī. Tāpēc {TRIGGER.VALUE} vienmēr tiks atrisināts uz "1" (kas norāda "Problem" stāvokli) izteiksmes novērtēšanas laikā.
:::

[comment]: # ({/07d50a02-473bcd5e})

[comment]: # ({8df5a50f-d4e5ef03})
#### Funkcijas

Funkcijas ļauj aprēķināt savāktās vērtības (vidējo, minimālo, maksimālo, summu), atrast virknes, atsaukties uz pašreizējo laiku un citiem faktoriem.

Pilns [atbalstīto funkciju](/manual/appendix/functions) saraksts ir pieejams.

Parasti funkcijas atgriež skaitliskas vērtības salīdzināšanai.
Atgriežot virknes, salīdzināšana ir iespējama ar operatoriem **=** un **<>** (skatiet [piemēru](#example-14)).

[comment]: # ({/8df5a50f-d4e5ef03})

[comment]: # ({79396a0f-b255de16})
#### Funkciju parametri

Funkciju parametri ļauj norādīt:

-   hosta un vienuma atslēgu (funkcijas, kas atsaucas tikai uz hosta vienuma vēsturi)
-   funkcijai specifiskus parametrus
-   citas izteiksmes (nav pieejamas funkcijām, kas atsaucas uz hosta vienuma vēsturi; piemērus skatiet sadaļā [citas izteiksmes](#other-expressions))

Hosta un vienuma atslēgu var norādīt kā `/host/key`.<br>
Hosta nosaukuma izlaišana pirmajā parametrā (t. i., kā `function(//key,parameter,...)`) ir atbalstīta tikai noteiktos kontekstos:

-   Aprēķināto vienumu formulā
-   Izteiksmju makrosos, kurus var izmantot:
    -   laukā [*Notikuma nosaukums*](/manual/config/triggers/trigger#configuration)
    -   grafika nosaukumā
    -   "Host" un "Trigger" [kartes elementu](/manual/config/visualization/maps/map#adding-elements) etiķetē

Šajos kontekstos varat izmantot arī makro [`{HOST.HOST}`](/manual/appendix/macros/supported_by_location#hosthost).
`{HOST.HOST<1-9>}` var izmantot laukā *Notikuma nosaukums* un "Trigger" kartes elementā, lai atsauktos uz konkrētu vienumu trigeris izteiksmē.
Ja šajos kontekstos hosta nosaukums ir izlaists vai aizstāts ar `{HOST.HOST}`, atsauce norāda uz pirmo vienumu trigeris izteiksmē vai uz pirmo vienumu grafikā.
Ārpus šiem atbalstītajiem kontekstiem hosta nosaukuma izlaišana trigeris izteiksmēs radīs kļūdu.
Skatiet [18. piemēru](#example-18), lai redzētu dubultās slīpsvītras izmantošanas ilustrāciju Notikuma nosaukums makrosos.

Atsauktajam vienumam jābūt atbalstītā stāvoklī (izņemot funkciju **nodata()**, kas tiek aprēķināta arī neatbalstītiem vienumiem).

Lai gan citi trigeris izteiksmes kā funkciju parametri trigeros ir ierobežoti līdz funkcijām, kas nav saistītas ar vēsturi, šis ierobežojums neattiecas uz [aprēķinātajiem vienumiem](/manual/config/items/itemtypes/calculated).

[comment]: # ({/79396a0f-b255de16})

[comment]: # ({233dadf7-cf9e09bb})
##### Funkcijai specifiskie parametri

Funkcijai specifiskie parametri tiek ievietoti aiz vienuma atslēgas un no vienuma atslēgas tiek atdalīti ar komatu.
Pilnu šo parametru sarakstu skatiet [atbalstītajās funkcijās](/manual/appendix/functions).

Lielākā daļa skaitlisko funkciju pieņem laiku kā parametru.
Lai norādītu laiku, varat izmantot sekundes vai [laika sufiksus](/manual/appendix/suffixes).
Ja parametra priekšā ir hash zīme, tam ir cita nozīme:

|Expression|Description|
|----------|-----------|
|**sum**(/host/key,**10m)**|Pēdējo 10 minūšu vērtību summa.|
|**sum**(/host/key,**\#10)**|Pēdējo desmit vērtību summa.|

Parametri ar hash zīmi funkcijā **last** nozīmē ko citu - tie apzīmē N-to iepriekšējo vērtību, tāpēc, ja ir dotas vērtības 30, 70, 20, 60, 50 (no jaunākās līdz vecākajai):

-   `last(/host/key,#2)` atgriezīs '70'
-   `last(/host/key,#5)` atgriezīs '50'

[comment]: # ({/233dadf7-cf9e09bb})

[comment]: # ({bf48db7f-6699e631})
##### Laika nobīde

Kā funkcijas parametru tiek atbalstīta izvēles laika nobīde ar laiku vai vērtību skaitu.
Šis parametrs ļauj atsaukties uz datiem no pagātnes laika perioda.

Laika nobīde sākas ar `now` - norādot pašreizējo laiku, un tai seko `+N<time unit>` vai `-N<time unit>` - lai pieskaitītu vai atņemtu N laika vienības.

Piemēram, `avg(/host/key,1h:now-1d)` atgriezīs vidējo vērtību vienai stundai pirms vienas dienas.

::: noteimportant
Laika nobīde, kas norādīta mēnešos (M) un gados (y), tiek atbalstīta tikai [tendences funkcijām](/manual/appendix/functions/trends). Citas funkcijas atbalsta sekundes (s), minūtes (m), stundas (h), dienas (d) un nedēļas (w).
:::

**Laika nobīde ar absolūtajiem laika periodiem**

Absolūtie laika periodi tiek atbalstīti laika nobīdes parametrā, piemēram, no pusnakts līdz pusnaktij dienai, no pirmdienas līdz svētdienai nedēļai, no mēneša pirmās dienas līdz pēdējai dienai mēnesim.

Laika nobīde absolūtajiem laika periodiem sākas ar `now` - norādot pašreizējo laiku, un tai seko jebkurš skaits laika darbību: `/<time unit>` - nosaka laika vienības sākumu un beigas, piemēram, no pusnakts līdz pusnaktij dienai, `+N<time unit>` vai `-N<time unit>` - lai pieskaitītu vai atņemtu N laika vienības.

Lūdzu, ņemiet vērā, ka laika nobīdes vērtība var būt lielāka vai vienāda ar 0, savukārt laika perioda minimālā vērtība ir 1.

|Parameter|Description|
|--|--------|
|1d:now/d|Vakar|
|1d:now/d+1d|Šodien|
|2d:now/d+1d|Pēdējās 2 dienas|
|1w:now/w|Pagājušā nedēļa|
|1w:now/w+1w|Šī nedēļa|

[comment]: # ({/bf48db7f-6699e631})

[comment]: # ({afa2064a-c5d3ec54})
##### Citi izteiksmes

Funkcijas parametri var saturēt citus izteiksmes, kā parādīts šādā sintaksē:

```default
min(min(/host/key,1h),min(/host2/key2,1h)*10)
```

Ņemiet vērā, ka citus izteiksmes nevar izmantot, ja funkcija atsaucas uz vienuma vēsturi.
Piemēram, šāda sintakse **nav** atļauta:

~~`min(/host/key,#5*10)`~~

[comment]: # ({/afa2064a-c5d3ec54})

[comment]: # ({5aa16694-10bc91a2})
#### Operatori

Tālāk norādītie operatori ir atbalstīti trigeriem **(izpildes prioritātes dilstošā secībā)**:

|Priority|Operator|Definition|**Notes for [unknown values](/manual/config/triggers/expression#expressions-with-unknown-operands)**|Force cast operand to float ^**1**^|
|-|-|----|----------------|--|
|**1**|**-**|Unārais mīnuss|**-**Unknown → Unknown|Yes|
|**2**|**not**|Loģiskais NOT|**not** Unknown → Unknown|Yes|
|**3**|**\***|Reizināšana|0 **\*** Unknown → Unknown<br>(jā, Unknown, nevis 0 - lai nezaudētu<br>Unknown aritmētiskajās darbībās)<br>1.2 **\*** Unknown → Unknown|Yes|
|<|**/**|Dalīšana|Unknown **/** 0 → error<br>Unknown **/** 1.2 → Unknown<br>0.0 **/** Unknown → Unknown|Yes|
|**4**|**+**|Aritmētiskais plus|1.2 **+** Unknown → Unknown|Yes|
|<|**-**|Aritmētiskais mīnuss|1.2 **-** Unknown → Unknown|Yes|
|**5**|**\<**|Mazāks par. Operators ir definēts kā:<br><br>A<B ⇔ (A<B-0.000001)|1.2 **<** Unknown → Unknown|Yes|
|<|**<=**|Mazāks vai vienāds ar. Operators ir definēts kā:<br><br>A<=B ⇔ (A≤B+0.000001)|Unknown **<=** Unknown → Unknown|Yes|
|<|**>**|Lielāks par. Operators ir definēts kā:<br><br>A>B ⇔ (A>B+0.000001)| |Yes|
|<|**>=**|Lielāks vai vienāds ar. Operators ir definēts kā:<br><br>A>=B ⇔ (A≥B-0.000001)| |Yes|
|**6**|**=**|Vienāds ar. Operators ir definēts kā:<br><br>A=B ⇔ (A≥B-0.000001) and (A≤B+0.000001)| |No ^**1**^|
|<|**<>**|Nav vienāds ar. Operators ir definēts kā:<br><br>A<>B ⇔ (A<B-0.000001) or (A>B+0.000001)| |No ^**1**^|
|**7**|**and**|Loģiskais AND|0 **and** Unknown → 0<br>1 **and** Unknown → Unknown<br>Unknown **and** Unknown → Unknown|Yes|
|**8**|**or**|Loģiskais OR|1 **or** Unknown → 1<br>0 **or** Unknown → Unknown<br>Unknown **or** Unknown → Unknown|Yes|

^**1**^ String operands joprojām tiek pārveidots par skaitlisku, ja:

-   otrs operands ir skaitlisks
-   uz operanda tiek lietots operators, kas nav **=** vai **<>**

Relāciju operatoriem (`<`, `<=`, `>`, `>=`): ja pārveidošana neizdodas (piemēram, uz `""`), izteiksmes rezultāts ir Unknown (nav virkņu salīdzināšanas rezerves mehānisma).

Vienādības operatoriem (`=`, `<>`): ja pārveidošana neizdodas, operandi tiek salīdzināti kā neapstrādātas virknes.

Operatori **not**, **and** un **or** ir reģistrjutīgi un tiem jābūt rakstītiem ar mazajiem burtiem.
Tiem arī jābūt atdalītiem ar atstarpēm vai iekavām.

Visiem operatoriem, izņemot unāro **-** un **not**, ir asociativitāte no kreisās uz labo pusi.
Unārie **-** un **not** nav asociatīvi (tas nozīmē, ka jāizmanto **-(-1)** un **not (not 1)**, nevis **--1** un **not not 1**).

Izvērtēšanas rezultāts:

-   operatori **<**, **<=**, **>**, **>=**, **=**, **<>** trigeru izteiksmē atgriež '1', ja norādītā attiecība ir patiesa, un '0', ja tā ir aplama.
Ja vismaz viens operands ir Unknown, rezultāts ir Unknown;
-   **and** zināmiem operandiem atgriež '1', ja abi tā operandi salīdzinājumā nav vienādi ar '0'; citādi tas atgriež '0'; nezināmiem operandiem **and** atgriež '0' tikai tad, ja viens operands salīdzinājumā ir vienāds ar '0'; citādi tas atgriež 'Unknown';
-   **or** zināmiem operandiem atgriež '1', ja vismaz viens no tā operandiem salīdzinājumā nav vienāds ar '0'; citādi tas atgriež '0'; nezināmiem operandiem **or** atgriež '1' tikai tad, ja viens operands salīdzinājumā nav vienāds ar '0'; citādi tas atgriež 'Unknown';
-   loģiskās noliegšanas operatora **not** rezultāts zināmam operandam ir '0', ja tā operanda vērtība salīdzinājumā nav vienāda ar '0'; '1', ja tā operanda vērtība salīdzinājumā ir vienāda ar '0'.
Nezināmam operandam **not** atgriež 'Unknown'.

[comment]: # ({/5aa16694-10bc91a2})

[comment]: # ({0e2466bf-195c3f4f})
#### Vērtību kešošana

Vērtības, kas nepieciešamas trigeru novērtēšanai, tiek kešotas Zabbix serverī.
Tāpēc pēc servera restartēšanas trigeru novērtēšana kādu laiku rada lielāku datubāzes noslodzi.

Vērtību kešatmiņa netiek notīrīta, kad vienuma vēstures vērtības tiek noņemtas (vai nu manuāli, vai ar housekeeper palīdzību), tāpēc serveris izmantos kešotās vērtības, līdz tās kļūs vecākas par laika periodiem, kas definēti trigeru funkcijās, vai līdz serveris tiks restartēts.

::: noteclassic
Ja kešatmiņā nav nesenu datu un funkcijā nav definēts vaicājuma periods, Zabbix pēc noklusējuma vaicās datubāzi par vēsturiskajām vērtībām, meklējot datus līdz pat vienai nedēļai pagātnē.
:::

[comment]: # ({/0e2466bf-195c3f4f})

[comment]: # ({abac99e3-abac99e3})
#### Trigeru piemēri

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

[comment]: # ({56e707cf-17b607dc})
##### Piemērs 1

Procesora noslodze uz Zabbix serveris ir pārāk augsta.

```default
last(/Zabbix server/system.cpu.load[all,avg1])>5
```

Izmantojot funkciju 'last()', mēs atsaucamies uz jaunāko vērtību.
`/Zabbix server/system.cpu.load[all,avg1]` norāda uz uzraudzītā parametra īso nosaukumu.
Tas nosaka, ka hosts ir 'Zabbix serveris' un uzraudzītais atslēgas nosaukums ir 'system.cpu.load\[all,avg1\]'.
Visbeidzot, `>5` nozīmē, ka trigeris ir PROBLEM stāvoklī ikreiz, kad jaunākais procesora noslodzes mērījums no Zabbix serveris ir lielāks par 5.

[comment]: # ({/56e707cf-17b607dc})

[comment]: # ({eb26dc13-9a129732})
##### Piemērs 2

www.example.com ir pārslogots.

```default
last(/www.example.com/system.cpu.load[all,avg1])>5 or min(/www.example.com/system.cpu.load[all,avg1],10m)>2 
```

Izteiksme ir patiesa, ja pašreizējā procesora slodze ir lielāka par 5 vai procesora slodze pēdējo 10 minūšu laikā bija lielāka par 2.

[comment]: # ({/eb26dc13-9a129732})

[comment]: # ({c3efce1a-49592749})
##### Piemērs 3

/etc/passwd ir mainīts.

```default
last(/www.example.com/vfs.file.cksum[/etc/passwd],#1)<>last(/www.example.com/vfs.file.cksum[/etc/passwd],#2)
```

Izteiksme ir patiesa, ja iepriekšējā /etc/passwd kontrolsummas vērtība atšķiras no jaunākās.

Līdzīgas izteiksmes var būt noderīgas, lai uzraudzītu izmaiņas svarīgos failos, piemēram, /etc/passwd, /etc/inetd.conf, /kernel u.c.

[comment]: # ({/c3efce1a-49592749})

[comment]: # ({2c152827-46e72843})
##### Piemērs 4

Kāds lejupielādē lielu failu no interneta.

Funkcijas min izmantošana:

```default
min(/www.example.com/net.if.in[eth0,bytes],5m)>100K
```

Izteiksme ir patiesa, ja saņemto baitu skaits uz eth0 pēdējo 5 minūšu laikā ir lielāks par 100 KB.

[comment]: # ({/2c152827-46e72843})

[comment]: # ({914aa064-7956e04e})
##### Piemērs 5

Abi klasterizētā SMTP servera mezgli ir nedarbojas.

Ņemiet vērā divu dažādu hostu izmantošanu vienā izteiksmē:

```default
last(/smtp1.example.com/net.tcp.service[smtp])=0 and last(/smtp2.example.com/net.tcp.service[smtp])=0
```

Izteiksme ir patiesa, ja abi SMTP serveri ir nedarbojas gan smtp1.example.com, gan smtp2.example.com.

[comment]: # ({/914aa064-7956e04e})

[comment]: # ({461ff958-62cfb014})
##### Piemērs 6

Zabbix aģents ir jājaunina.

Funkcijas find() izmantošana:

```default
find(/example.example.com/agent.version,,"like","beta8")=1
```

Izteiksme ir patiesa, ja Zabbix aģenta versija ir beta8.

[comment]: # ({/461ff958-62cfb014})

[comment]: # ({b25c8bb8-567b88a9})
##### Piemērs 7

Serveris nav sasniedzams.

```default
count(/example.example.com/icmpping,30m,,"0")>5
```

Izteiksme ir patiesa, ja hosts "example.example.com" pēdējo 30 minūšu laikā nav sasniedzams vairāk nekā 5 reizes.

[comment]: # ({/b25c8bb8-567b88a9})

[comment]: # ({c264178f-2f13cb92})
##### Piemērs 8

Nav sirdspukstu pēdējo 3 minūšu laikā.

Funkcijas nodata() izmantošana:

```default
nodata(/example.example.com/tick,3m)=1
```

Lai izmantotu šo trigeri, 'tick' ir jābūt definētam kā Zabbix [trapper](/manual/config/items/itemtypes/trapper) vienumam.
Hostam periodiski jānosūta dati šim vienumam, izmantojot zabbix\_sender.
Ja 180 sekunžu laikā netiek saņemti dati, trigeris kļūst par PROBLEM.

*Piezīme*, ka 'nodata' var izmantot jebkura veida vienumam.

[comment]: # ({/c264178f-2f13cb92})

[comment]: # ({663a1265-2c48905a})
##### Piemērs 9

CPU aktivitāte nakts laikā.

Funkcijas time() izmantošana:

```default
min(/Zabbix server/system.cpu.load[all,avg1],5m)>2 and time()<060000
```

Trigeris var mainīt savu stāvokli uz problēmu tikai nakts laikā (00:00 - 06:00).

[comment]: # ({/663a1265-2c48905a})

[comment]: # ({2a28e303-7e0ba13a})
##### Piemērs 10

CPU aktivitāte jebkurā laikā ar izņēmumu.

Funkcijas time() un operatora **not** izmantošana:

```default
min(/zabbix/system.cpu.load[all,avg1],5m)>2
and not (dayofweek()=7 and time()>230000)
and not (dayofweek()=1 and time()<010000)
```

Trigeris var jebkurā laikā mainīt savu stāvokli uz problēmu, izņemot 2 stundas nedēļas maiņas laikā (svētdiena, 23:00 - pirmdiena, 01:00).

[comment]: # ({/2a28e303-7e0ba13a})

[comment]: # ({dbb498df-0e6bfc51})
##### Piemērs 11

Pārbaudiet, vai klienta lokālais laiks ir sinhronizēts ar Zabbix servera laiku.

Funkcijas fuzzytime() izmantošana:

```default
fuzzytime(/MySQL_DB/system.localtime,10s)=0
```

Trigeris pāries problēmas stāvoklī, ja lokālais laiks serverī MySQL\_DB un Zabbix serverī atšķirsies par vairāk nekā 10 sekundēm.
Ņemiet vērā, ka 'system.localtime' Zabbix aģentam ir jākonfigurē kā [pasīva pārbaude](/manual/appendix/items/activepassive#passive-checks); Zabbix agent 2 to var konfigurēt kā aktīvu pārbaudi.

[comment]: # ({/dbb498df-0e6bfc51})

[comment]: # ({4f63a3b1-47b2e2fd})
##### Piemērs 12

Salīdzinot šodienas vidējo slodzi ar tā paša laika vidējo slodzi vakar (izmantojot laika nobīdi kā `now-1d`).

```default
avg(/server/system.cpu.load,1h)/avg(/server/system.cpu.load,1h:now-1d)>2
```

Trigeris nostrādās, ja pēdējās stundas vidējā slodze pārsniegs tā paša vakardienas stundas vidējo slodzi vairāk nekā divas reizes.

[comment]: # ({/4f63a3b1-47b2e2fd})

[comment]: # ({536c07d9-bb0f5278})
##### Piemērs 13

Izmantojot cita vienuma vērtību, lai iegūtu trigeris slieksni:

```default
last(/Template PfSense/hrStorageFree[{#SNMPVALUE}])<last(/Template PfSense/hrStorageSize[{#SNMPVALUE}])*0.1
```

Trigeris nostrādās, ja brīvās krātuves apjoms samazināsies zem 10 procentiem.

[comment]: # ({/536c07d9-bb0f5278})

[comment]: # ({e67109f1-0cc34ec7})
##### Piemērs 14

Izmantojot [novērtējuma rezultātu](#operators), lai iegūtu trigeru skaitu virs sliekšņa:

```default
(last(/server1/system.cpu.load[all,avg1])>5) + (last(/server2/system.cpu.load[all,avg1])>5) + (last(/server3/system.cpu.load[all,avg1])>5)>=2
```

Trigeris aktivizēsies, ja vismaz divi no izteiksmē iekļautajiem trigeriem būs problēmas stāvoklī.

[comment]: # ({/e67109f1-0cc34ec7})

[comment]: # ({3d70b4b9-adfc6b9d})
##### 15. piemērs

Divu vienumu virkņu vērtību salīdzināšana - operandi šeit ir funkcijas, kas atgriež virknes.

Problēma: izveidot brīdinājumu, ja Ubuntu versija atšķiras dažādos hostos

```default
last(/NY Zabbix server/vfs.file.contents[/etc/os-release])<>last(/LA Zabbix server/vfs.file.contents[/etc/os-release])
```

[comment]: # ({/3d70b4b9-adfc6b9d})

[comment]: # ({18b8548e-c2b4949f})
##### Piemērs 16

Salīdzinot divas virknes vērtības - operandi ir:

-   funkcija, kas atgriež virkni
-   makro un virkņu kombinācija

Problēma: noteikt izmaiņas DNS vaicājumā

Vienuma atslēga ir:

```default
net.dns.record[192.0.2.1,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1]
```

ar definētiem makro

```default
{$WEBSITE_NAME} = example.com
{$DNS_RESOURCE_RECORD_TYPE} = MX
```

un parasti atgriež:

```default
example.com           MX       0 mail.example.com
```

Tātad mūsu trigeris izteiksme, lai noteiktu, vai DNS vaicājuma rezultāts ir novirzījies no sagaidāmā rezultāta, ir:

```default
last(/Zabbix server/net.dns.record[192.0.2.1,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME}           {$DNS_RESOURCE_RECORD_TYPE}       0 mail.{$WEBSITE_NAME}"
```

Ņemiet vērā pēdiņas ap otro operandu.

[comment]: # ({/18b8548e-c2b4949f})

[comment]: # ({3c7c7fa3-60fad4fc})
##### Piemērs 17

Salīdzinot divas virknes vērtības - operandi ir:

-   funkcija, kas atgriež virkni
-   virknes konstante ar speciālajām rakstzīmēm \\ un "

Problēma: noteikt, vai faila `/tmp/hello` saturs ir vienāds ar:

```default
\" //hello ?\"
```

1. variants. Ierakstiet virkni tieši:

```default
last(/Zabbix server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\""
```

Ņemiet vērā, kā rakstzīmes \\ un " tiek ekrānētas, kad virkne tiek salīdzināta tieši.

2. variants. Izmantojiet makro

```default
{$HELLO_MACRO} = \" //hello ?\"
```

izteiksmē:

```default
last(/Zabbix server/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}
```

[comment]: # ({/3c7c7fa3-60fad4fc})

[comment]: # ({9351ce5e-6906462b})
##### Piemērs 18

Ilgtermiņa periodu salīdzināšana.

Problēma: Exchange servera slodze pagājušajā mēnesī palielinājās par vairāk nekā 10%

```default
trendavg(/Exchange/system.cpu.load,1M:now/M)>1.1*trendavg(/Exchange/system.cpu.load,1M:now/M-1M)
```

Varat arī izmantot lauku [Notikuma nosaukums](/manual/config/triggers/trigger#configuration) trigeru konfigurācijā, lai izveidotu jēgpilnu brīdinājuma ziņojumu, piemēram, lai saņemtu kaut ko līdzīgu

`"Exchange servera slodze jūlijā palielinājās par 24% (0.69), salīdzinot ar jūniju (0.56)"`

notikuma nosaukumam jābūt definētam šādi:

```default
Load of {HOST.HOST} server increased by {{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}% in {{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)}) comparing to {{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)})
```

Šāda veida problēmai trigeru konfigurācijā ir arī lietderīgi atļaut manuālu aizvēršanu.

[comment]: # ({/9351ce5e-6906462b})

[comment]: # ({0927c71d-contribute})
::: note-contribute
Vai jums ir trigeru izteiksmes piemērs, kas varētu būt noderīgs citiem? Izmantojiet [Example suggestion form](#report-example), lai nosūtītu to Zabbix izstrādātājiem.
:::

[comment]: # ({/0927c71d-contribute})

[comment]: # ({6e5624e6-3f1b1c81})
#### Histerēze

Dažkārt starp problēmas un atkopšanās stāvokļiem ir nepieciešams intervāls, nevis vienkāršs slieksnis.
Piemēram, ja vēlamies definēt trigeri, kas ziņo par problēmu, kad servera telpas temperatūra pārsniedz 20°C, un vēlamies, lai tas paliek problēmas stāvoklī, līdz temperatūra nokrītas zem 15°C, ar vienkāršu trigera slieksni pie 20°C nepietiks.

Tā vietā vispirms ir jādefinē trigeris izteiksme problēmas notikumam (temperatūra virs 20°C).
Pēc tam ir jādefinē papildu atkopšanās nosacījums (temperatūra zem 15°C).
To veic, definējot papildu *Recovery expression* parametru, kad [definē](/manual/config/triggers/trigger) trigeri.

Šajā gadījumā problēmas atkopšanās notiks divos soļos:

-   Vispirms problēmas izteiksmei (temperatūra virs 20°C) jānovērtējas kā FALSE
-   Pēc tam atkopšanās izteiksmei (temperatūra zem 15°C) jānovērtējas kā TRUE

Atkopšanās izteiksme tiks novērtēta tikai tad, kad problēmas notikums vispirms būs atrisināts.

::: notewarning
Ja vien atkopšanās izteiksme ir TRUE, ar to vien nepietiek, lai atrisinātu problēmu, ja problēmas izteiksme joprojām ir TRUE!
:::

[comment]: # ({/6e5624e6-3f1b1c81})

[comment]: # ({e401ef55-942a7e0e})
##### Piemērs 1

Temperatūra servera telpā ir pārāk augsta.

Problēmas izteiksme:

```default
last(/server/temp)>20
```

Atjaunošanās izteiksme:

```default
last(/server/temp)<=15
```

[comment]: # ({/e401ef55-942a7e0e})

[comment]: # ({489d9e1d-bddf0717})
##### Piemērs 2

Brīvās diska vietas ir pārāk maz.

Problēmas izteiksme: tā ir mazāka par 10 GB pēdējo 5 minūšu laikā

```default
max(/server/vfs.fs.size[/,free],5m)<10G
```

Atjaunošanās izteiksme: tā ir lielāka par 40 GB pēdējo 10 minūšu laikā

```default
min(/server/vfs.fs.size[/,free],10m)>40G
```

[comment]: # ({/489d9e1d-bddf0717})

[comment]: # ({91453a7f-6fc2eb1c})
#### Izteiksmes ar nezināmiem operandiem

Parasti nezināms operands (piemēram, neatbalstīts vienums) izteiksmē nekavējoties padarīs trigeri par `Unknown`.

Tomēr dažos gadījumos nezināmi operandi (neatbalstīti vienumi, funkciju kļūdas) tiek pieļauti izteiksmes novērtēšanā:

-   Funkcija `nodata()` tiek novērtēta neatkarīgi no tā, vai atsauces vienums tiek atbalstīts vai nē.
-   Loģiskās izteiksmes ar OR un AND var tikt novērtētas līdz zināmām vērtībām divos gadījumos neatkarīgi no nezināmiem operandiem:
    -   **1. gadījums**: "`1 or some_function(unsupported_item1) or some_function(unsupported_item2) or ...`" var tikt novērtēta līdz zināmam rezultātam ('1' vai "Problem"),
    -   **2. gadījums**: "`0 and some_function(unsupported_item1) and some_function(unsupported_item2) and ...`" var tikt novērtēta līdz zināmam rezultātam ('0' vai "OK").<br>
        Zabbix mēģina novērtēt šādas loģiskās izteiksmes, uzskatot neatbalstītos vienumus par nezināmiem operandiem.
        Abos iepriekš minētajos gadījumos tiks iegūta zināma vērtība ("Problem" vai "OK" attiecīgi); **visos citos** gadījumos trigeris tiks novērtēts kā `Unknown`.
-   Ja funkcijas novērtēšana atbalstītam vienumam beidzas ar kļūdu, funkcijas vērtība kļūst par `Unknown` un tā piedalās kā nezināms operands turpmākajā izteiksmes novērtēšanā.

Ņemiet vērā, ka nezināmi operandi var "pazust" tikai loģiskajās izteiksmēs, kā aprakstīts iepriekš.
Aritmētiskajās izteiksmēs nezināmi operandi vienmēr noved pie rezultāta `Unknown` (izņemot dalīšanu ar 0).

::: noteimportant
Izteiksme, kuras rezultāts ir `Unknown`, nemaina trigeris stāvokli ("Problem/OK").
Tātad, ja tas bija "Problem" (skatiet 1. gadījumu), tas paliek tajā pašā problēmas stāvoklī pat tad, ja zināmā daļa tiek atrisināta ('1' kļūst par '0'), jo izteiksme tagad tiek novērtēta kā `Unknown`, un tas nemaina trigeris stāvokli.
:::

Ja trigeris izteiksme ar vairākiem neatbalstītiem vienumiem tiek novērtēta kā `Unknown`, kļūdas ziņojums lietotāja saskarnē attiecas uz pēdējo novērtēto neatbalstīto vienumu.

[comment]: # ({/91453a7f-6fc2eb1c})
