2 Trigeris izteiksme

Pārskats

Izteiksmes, kas tiek izmantotas trigeros, 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:

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 un izvairītos no trigeru svārstīšanās.

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

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

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 piemērus)

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

Šajos kontekstos varat izmantot arī {HOST.HOST} 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, 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.

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.

Lielākā daļa skaitlisko funkciju pieņem laiku kā parametru. Laika norādīšanai var izmantot sekundes vai laika sufiksus. 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'
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.

Laika nobīde, kas norādīta mēnešos (M) un gados (y), tiek atbalstīta tikai trend functions. 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
Citi izteiksmes

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

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)

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 Piespiedu kārtā pārvērst operandu par float 1
1 - Vienārais mīnuss -Nezināms → Nezināms
2 not Loģiskais NOT not Nezināms → Nezināms
3 * Reizināšana 0 * Nezināms → Nezināms
(jā, Nezināms, nevis 0 - lai aritmētiskajās
darbībās nezaudētu Nezināms)
1.2 * Nezināms → Nezināms
/ Dalīšana Nezināms / 0 → kļūda
Nezināms / 1.2 → Nezināms
0.0 / Nezināms → Nezināms
4 + Aritmētiskais plus 1.2 + Nezināms → Nezināms
- Aritmētiskais mīnuss 1.2 - Nezināms → Nezināms
5 < Mazāks par. Operators ir definēts kā:

A<B ⇔ (A<B-0.000001)
1.2 < Nezināms → Nezināms
<= Mazāks vai vienāds ar. Operators ir definēts kā:

A<=B ⇔ (A≤B+0.000001)
Nezināms <= Nezināms → Nezināms
> Lielāks par. Operators ir definēts kā:

A>B ⇔ (A>B+0.000001)
>= Lielāks vai vienāds ar. Operators ir definēts kā:

A>=B ⇔ (A≥B-0.000001)
6 = Vienāds ar. Operators ir definēts kā:

A=B ⇔ (A≥B-0.000001) and (A≤B+0.000001)
1
<> Nav vienāds ar. Operators ir definēts kā:

A<>B ⇔ (A<B-0.000001) or (A>B+0.000001)
1
7 and Loģiskais AND 0 and Nezināms → 0
1 and Nezināms → Nezināms
Nezināms and Nezināms → Nezināms
8 or Loģiskais OR 1 or Nezināms → 1
0 or Nezināms → Nezināms
Nezināms or Nezināms → Nezināms

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

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.

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

Trigeru piemēri

Piemērs 1

Procesora slodze ir pārāk augsta Zabbix serverī.

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.

Piemērs 2

www.example.com ir pārslogots.

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.

Piemērs 3

/etc/passwd ir mainīts.

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.

Piemērs 4

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

Funkcijas min izmantošana:

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.

Piemērs 5

Abi klasterizētā SMTP servera mezgli ir nedarbojas.

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

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.

Piemērs 6

Zabbix aģents ir jāatjaunina.

Funkcijas find() izmantošana:

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

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

Piemērs 7

Serveris nav sasniedzams.

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.

Piemērs 8

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

Funkcijas nodata() izmantošana:

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

Lai izmantotu šo trigeri, 'tick' ir jādefinē kā Zabbix 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.

Piemērs 9

CPU aktivitāte nakts laikā.

Funkcijas time() izmantošana:

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

Piemērs 10

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

Funkcijas time() un not operatora lietošana:

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

Piemērs 11

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

Funkcijas fuzzytime() izmantošana:

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; Zabbix agent 2 to var konfigurēt kā aktīvu pārbaudi.

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

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.

Piemērs 13

Cita vienuma vērtības izmantošana, lai iegūtu trigera slieksni:

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.

Piemērs 14

Izmantojot izvērtēšanas rezultātu, lai iegūtu trigeru skaitu virs sliekšņa:

(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ī.

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

last(/NY Zabbix server/vfs.file.contents[/etc/os-release])<>last(/LA Zabbix server/vfs.file.contents[/etc/os-release])
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:

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

ar definētiem makro

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

un parasti atgriež:

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:

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.

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:

\" //hello ?\"
  1. variants. Ierakstiet virkni tieši:
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.

  1. variants. Izmantojiet makro
{$HELLO_MACRO} = \" //hello ?\"

izteiksmē:

last(/Zabbix server/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}
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%

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 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:

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.

Vai jums ir trigeru izteiksmju piemērs, kas varētu būt noderīgs citiem? Izmantojiet Example suggestion form, lai nosūtītu to Zabbix izstrādātājiem.

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

Ja atjaunošanās izteiksme ir TRUE pati par sevi, tā neatrisina problēmu, ja problēmas izteiksme joprojām ir TRUE!

Piemērs 1

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

Problēmas izteiksme:

last(/server/temp)>20

Atjaunošanās izteiksme:

last(/server/temp)<=15
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ā

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ā

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

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").
      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).

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.