[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 attiecībā uz uzraudzītajiem statistikas datiem.

Vienkārša izteiksme izmanto **funkciju**, kas tiek piemērota 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 pēdējo piecu minūšu laikā saņemto baitu skaits 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 - definē problēmas nosacījumus
- atjaunošanas izteiksme (neobligāta) - definē 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, pastāv 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: ne tikai problēmas izteiksmei ir jābūt 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 kā "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]: # ({66244f3e-b255de16})
#### Funkcijas parametri

Funkcijas parametri ļauj norādīt:

-   hosts 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, skatiet [citas izteiksmes](#other-expressions) piemērus)

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

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

Lai gan citu trigeru izteiksmju izmantošana kā funkciju parametri ir ierobežota līdz netehistorijas funkcijām trigeros, šis ierobežojums neattiecas uz [aprēķinātajiem vienumiem](/manual/config/items/itemtypes/calculated).

[comment]: # ({/66244f3e-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.
Laika norādīšanai var izmantot sekundes vai [laika sufiksus](/manual/appendix/suffixes).
Ja parametram priekšā ir hash zīme, tam ir cita nozīme:

|Expression|Description|
|----------|-----------|
|**sum**(/host/key,**10m)**|Vērtību summa pēdējās 10 minūtēs.|
|**sum**(/host/key,**\#10)**|Pēdējo desmit vērtību summa.|

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

-   `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 [trend functions](/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ūtiem 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>` - definē 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 citas izteiksmes, kā parādīts šādā sintaksē:

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

Ņemiet vērā, ka citas izteiksmes nedrīkst 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 dilstošā prioritātes secībā)**:

|Prioritāte|Operators|Definīcija|**Piezīmes par [nezināmām vērtībām](/manual/config/triggers/expression#expressions-with-unknown-operands)**|Piespiedu kārtā pārvērst operandu par float ^**1**^|
|-|-|----|----------------|--|
|**1**|**-**|Vienārais mīnuss|**-**Nezināms → Nezināms|Jā|
|**2**|**not**|Loģiskais NOT|**not** Nezināms → Nezināms|Jā|
|**3**|**\***|Reizināšana|0 **\*** Nezināms → Nezināms<br>(jā, Nezināms, nevis 0 - lai aritmētiskajās<br>darbībās nezaudētu Nezināms)<br>1.2 **\*** Nezināms → Nezināms|Jā|
|<|**/**|Dalīšana|Nezināms **/** 0 → kļūda<br>Nezināms **/** 1.2 → Nezināms<br>0.0 **/** Nezināms → Nezināms|Jā|
|**4**|**+**|Aritmētiskais plus|1.2 **+** Nezināms → Nezināms|Jā|
|<|**-**|Aritmētiskais mīnuss|1.2 **-** Nezināms → Nezināms|Jā|
|**5**|**\<**|Mazāks par. Operators ir definēts kā:<br><br>A<B ⇔ (A<B-0.000001)|1.2 **<** Nezināms → Nezināms|Jā|
|<|**<=**|Mazāks vai vienāds ar. Operators ir definēts kā:<br><br>A<=B ⇔ (A≤B+0.000001)|Nezināms **<=** Nezināms → Nezināms|Jā|
|<|**>**|Lielāks par. Operators ir definēts kā:<br><br>A>B ⇔ (A>B+0.000001)| |Jā|
|<|**>=**|Lielāks vai vienāds ar. Operators ir definēts kā:<br><br>A>=B ⇔ (A≥B-0.000001)| |Jā|
|**6**|**=**|Vienāds ar. Operators ir definēts kā:<br><br>A=B ⇔ (A≥B-0.000001) and (A≤B+0.000001)| |Nē ^**1**^|
|<|**<>**|Nav vienāds ar. Operators ir definēts kā:<br><br>A<>B ⇔ (A<B-0.000001) or (A>B+0.000001)| |Nē ^**1**^|
|**7**|**and**|Loģiskais AND|0 **and** Nezināms → 0<br>1 **and** Nezināms → Nezināms<br>Nezināms **and** Nezināms → Nezināms|Jā|
|**8**|**or**|Loģiskais OR|1 **or** Nezināms → 1<br>0 **or** Nezināms → Nezināms<br>Nezināms **or** Nezināms → Nezināms|Jā|

^**1**^ Virknes operands joprojām tiek pārvērsts skaitliskā formā, ja:

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

Relāciju operatoriem (`<`, `<=`, `>`, `>=`): ja pārvēršana neizdodas (piemēram, uz `""`), izteiksme dod rezultātu Nezināms (nav virknes salīdzināšanas rezerves mehānisma).

Vienādības operatoriem (`=`, `<>`): ja pārvērš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 vienāro **-** un **not**, ir asociativitāte no kreisās uz labo pusi.
Vienārie **-** un **not** nav asociatīvi (tas nozīmē, ka jālieto **-(-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 Nezināms, rezultāts ir Nezināms;
-   **and** zināmiem operandiem atgriež '1', ja abi operandi nav vienādi ar '0'; citādi tas atgriež '0'; nezināmiem operandiem **and** atgriež '0' tikai tad, ja viens operands ir vienāds ar '0'; citādi tas atgriež 'Nezināms';
-   **or** zināmiem operandiem atgriež '1', ja vismaz viens no operandiem nav vienāds ar '0'; citādi tas atgriež '0'; nezināmiem operandiem **or** atgriež '1' tikai tad, ja viens operands nav vienāds ar '0'; citādi tas atgriež 'Nezināms';
-   loģiskās noliegšanas operatora **not** rezultāts zināmam operandam ir '0', ja tā operanda vērtība nav vienāda ar '0'; '1', ja tā operanda vērtība ir vienāda ar '0'.
Nezināmam operandam **not** atgriež 'Nezināms'.

[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 slodze ir pārāk augsta Zabbix serverī.

```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.
Tā nosaka, ka hosts ir 'Zabbix server' 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 slodzes 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 ja 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 hosts 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āatjaunina.

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ādefinē kā Zabbix [trapper](/manual/config/items/itemtypes/trapper) vienums.
Hostam periodiski jānosūta dati šim vienumam, izmantojot zabbix\_sender.
Ja 180 sekunžu laikā netiek saņemti dati, trigera vērtība kļūst PROBLEM.

*Piezīme* — '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 **not** operatora lietoš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ī gadījumā, ja lokālais laiks serverī MySQL\_DB un Zabbix serverī atšķiras par vairāk nekā 10 sekundēm.
Ņemiet vērā, ka 'system.localtime' Zabbix aģentam ir jākonfigurē kā [pasīvā 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 vakardienas tā paša laika vidējo slodzi (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 vairāk nekā divas reizes pārsniegs tās pašas stundas vidējo slodzi vakar.

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

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

Cita vienuma vērtības izmantošana, lai iegūtu trigera 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 [izvērtēšanas 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})
##### Piemērs 15

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 hosts

```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}"
```

Pievērsiet uzmanību pēdiņām 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 īpašā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 izteiksmju 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 atjaunoš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 trigeris 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 atjaunošanās nosacījums (temperatūra zem 15°C).  
To izdara, definējot papildu *Recovery expression* parametru, kad [definē](/manual/config/triggers/trigger) trigeri.

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

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

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

::: notewarning
Ja atjaunošanās izteiksme ir TRUE pati par sevi, tā neatrisina 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 trigeris vērtību par `Unknown`.

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

-   Funkcija `nodata()` tiek izvērtēta neatkarīgi no tā, vai atsauces vienums ir atbalstīts vai nav.
-   Loģiskās izteiksmes ar OR un AND var tikt izvē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 izvē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 izvērtēta līdz zināmam rezultātam ('0' vai "OK").<br>
        Zabbix mēģina izvē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 izvērtēts kā `Unknown`.
-   Ja funkcijas izvērtēšana atbalstītam vienumam beidzas ar kļūdu, funkcijas vērtība kļūst par `Unknown`, un tā turpmākajā izteiksmes izvērtēšanā piedalās kā nezināms operands.

Ņ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 izvērtēta kā `Unknown`, un tas nemaina trigeris stāvokli.
:::

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

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