7 Prognozējošās trigeru funkcijas

Pārskats

Dažkārt ir pazīmes, kas liecina par gaidāmu problēmu. Šīs pazīmes var pamanīt, lai savlaicīgi varētu veikt darbības un novērst problēmu vai vismaz samazināt tās ietekmi.

Zabbix ir rīki, kas ļauj prognozēt uzraudzītās sistēmas turpmāko darbību, pamatojoties uz vēsturiskajiem datiem. Šie rīki ir realizēti, izmantojot prognozējošās trigeru funkcijas.

Funkcijas

Pirms iestatīt trigeri, ir nepieciešams definēt, kas ir problēmas stāvoklis un cik daudz laika ir nepieciešams, lai veiktu darbību. Pēc tam ir divi veidi, kā iestatīt trigeri, kas signalizē par iespējamu nevēlamu situāciju. Pirmais: trigerim jāaktivizējas, kad ir sagaidāms, ka sistēma būs problēmas stāvoklī pēc "time to act". Otrais: trigerim jāaktivizējas, kad sistēma nonāks problēmas stāvoklī mazāk nekā "time to act" laikā. Atbilstošās trigeru funkcijas, ko izmantot, ir forecast un timeleft. Ņemiet vērā, ka pamatā esošā statistiskā analīze abām funkcijām ir būtībā identiska. Jūs varat iestatīt trigeri jebkurā no šiem veidiem ar līdzīgiem rezultātiem.

Parametri

Abas funkcijas izmanto gandrīz vienu un to pašu parametru kopu. Atsaucei izmantojiet supported functions sarakstu.

Laika intervāls

Vispirms jums jānorāda vēsturiskais periods, ko Zabbix vajadzētu analizēt, lai iegūtu prognozi. To var izdarīt ierastā veidā, izmantojot parametru time period un, ja nepieciešams, laika nobīdi, tāpat kā tas tiek darīts ar funkcijām avg, count, delta, max, min un sum.

Prognozēšanas horizonts

(tikai forecast)
Parametrs time norāda, cik tālu nākotnē Zabbix vajadzētu ekstrapolēt atkarības, ko tas atrod vēsturiskajos datos. Neatkarīgi no tā, vai izmantojat time_shift vai nē, time vienmēr tiek skaitīts, sākot no pašreizējā brīža.

Slieksnis, kas jāsasniedz

(tikai timeleft)
Parametrs threshold norāda vērtību, ko analizētais vienums ir jāsasniedz, nav nozīmes, vai no augšas vai no apakšas. Kad ir noteikta f(t) (sk. tālāk), jāatrisina vienādojums f(t) = threshold un jāatgriež sakne, kas ir tuvāk tagadnei un pa labi no tagadnes, vai 1.7976931348623158E+308, ja šādas saknes nav.

Kad vienuma vērtības tuvojas slieksnim un pēc tam to šķērso, timeleft pieņem, ka krustpunkts jau ir pagātnē, un tāpēc pārslēdzas uz nākamo krustpunktu ar threshold līmeni, ja tāds ir. Labākā prakse ir izmantot prognozes kā papildinājumu parastai problēmu diagnostikai, nevis kā aizstājēju.1

Pielāgošanas funkcijas

Noklusējuma fit ir lineārā funkcija. Taču, ja jūsu uzraudzītā sistēma ir sarežģītāka, jums ir pieejamas citas izvēles iespējas.

fit x = f(t)
lineārā x = a + b*t
polinomiālāN2 x = a~0~ + a~1~*t + a~2~*t2 + ... + a~n~*tn
eksponenciālā x = a*exp(b*t)
logaritmiskā x = a + b*log(t)
pakāpes x = a*tb
Režīmi

(tikai forecast)
Katru reizi, kad tiek novērtēta trigeris funkcija, tā iegūst datus no norādītā vēstures perioda un pielāgo datiem noteiktu funkciju. Tāpēc, ja dati nedaudz atšķiras, pielāgotā funkcija arī nedaudz atšķirsies. Ja mēs vienkārši aprēķinām pielāgotās funkcijas vērtību noteiktā brīdī nākotnē, jūs neko neuzzināsiet par to, kā paredzams, ka analizētais vienums uzvedīsies starp tagadni un šo nākotnes brīdi. Dažām fit opcijām (piemēram, polynomial) vienkārša vērtība no nākotnes var būt maldinoša.

mode forecast rezultāts
value f(now + time)
max max~now\ <=\ t\ <=\ now\ +\ time~ f(t)
min min~now\ <=\ t\ <=\ now\ +\ time~ f(t)
delta max - min
avg f(t) vidējā vērtība (now <= t <= now + time) saskaņā ar definīciju

Detaļas

Lai izvairītos no aprēķiniem ar ļoti lieliem skaitļiem, mēs uzskatām, ka norādītā perioda pirmās vērtības laikspiedols plus 1 ns ir jauns nulles laiks (pašreizējais epoch laiks ir aptuveni 109, epoch kvadrāts ir 1018, dubultprecizitāte ir aptuveni 10-16). 1 ns tiek pievienots, lai nodrošinātu visas pozitīvās laika vērtības logaritmiskajām un pakāpes pielāgošanām, kas ietver log(t) aprēķināšanu. Laika nobīde neietekmē lineāro, polinomiālo, eksponenciālo (izņemot vienkāršākus un precīzākus aprēķinus), taču maina logaritmisko un pakāpes funkciju formu.

Iespējamās kļūdas

Funkcijas šādās situācijās atgriež -1:

  • norādītais novērtēšanas periods nesatur datus;
  • matemātiskās darbības rezultāts nav definēts3;
  • skaitliskas problēmas (diemžēl dažiem ievades datu kopumiem dubultprecizitātes peldošā komata formāta diapazons un precizitāte kļūst nepietiekami)4.

Netiek parādīti brīdinājumi vai kļūdas, ja izvēlētais pielāgojums slikti raksturo sniegtos datus vai arī datu ir pārāk maz precīzai prognozei.

Piemēri un darbs ar kļūdām

Lai saņemtu brīdinājumu, kad jūsu hostā drīz beigsies brīvā diska vieta, varat izmantot trigeris izteiksmi, piemēram, šādu:

timeleft(/host/vfs.fs.size[/,free],1h,0)<1h

Tomēr kļūdas kods -1 var tikt ņemts vērā un pārvērst jūsu trigeris par problēmas stāvokli. Kopumā tas ir labi, jo jūs saņemat brīdinājumu, ka jūsu prognozes nedarbojas pareizi un tās vajadzētu rūpīgāk pārskatīt, lai noskaidrotu iemeslu. Taču dažkārt tas ir slikti, jo -1 var vienkārši nozīmēt, ka pēdējās stundas laikā nav iegūti dati par hosta brīvo diska vietu. Ja saņemat pārāk daudz kļūdaini pozitīvu brīdinājumu, apsveriet iespēju izmantot sarežģītāku trigeris izteiksmi 5:

timeleft(/host/vfs.fs.size[/,free],1h,0)<1h and timeleft(/host/vfs.fs.size[/,free],1h,0)<>-1

Ar forecast situācija ir nedaudz sarežģītāka. Pirmkārt, -1 var arī nevar pārvērst trigeris par problēmas stāvokli atkarībā no tā, vai jums ir izteiksme forecast(/host/item,(...))<... vai forecast(/host/item,(...))>...

Turklāt -1 var būt derīga prognoze, ja vienums vērtībai ir normāli būt negatīvai. Taču šādas situācijas varbūtība reālajā pasaulē ir niecīga (skatiet darbojas operators =). Tāpēc pievienojiet ... or forecast(/host/item,(...))=-1 vai ... and forecast(/host/item,(...))<>-1, ja vēlaties vai nevēlaties attiecīgi uzskatīt -1 par problēmu.

Piezīmes

1 Piemēram, vienkāršs trigeris, piemēram, timeleft(/host/item,1h,X) < 1h, var nonākt problēmas stāvoklī, kad vienums vērtība tuvojas X un pēc tam pēkšņi atjaunoties, tiklīdz tiek sasniegta vērtība X. Ja problēma ir tā, ka vienums vērtība ir zem X, izmantojiet: last(/host/item) < X or timeleft(/host/item,1h,X) < 1h Ja problēma ir tā, ka vienums vērtība ir virs X, izmantojiet: last(/host/item) > X or timeleft(/host/item,1h,X) < 1h

2 Polinoma pakāpe var būt no 1 līdz 6, polynomial1 ir ekvivalents linear. Tomēr augstākas pakāpes polinomus izmantojiet piesardzīgi. Ja novērtēšanas periodā ir mazāk punktu, nekā nepieciešams polinoma koeficientu noteikšanai, polinoma pakāpe tiks samazināta (piem., tiek pieprasīts polynomial5, bet ir tikai 4 punkti, tāpēc tiks pielāgots polynomial3).

3 Piemēram, exponential vai power funkciju pielāgošana ietver item vērtību log() aprēķināšanu. Ja datos ir nulles vai negatīvi skaitļi, tiks parādīta kļūda, jo log() ir definēts tikai pozitīvām vērtībām.

4 linear, exponential, logarithmic un power pielāgojumiem visi nepieciešamie aprēķini var tikt uzrakstīti tieši. Savukārt polynomial bez papildu soļiem var aprēķināt tikai value. avg aprēķināšana ietver polinoma primitīvās funkcijas aprēķināšanu (analītiski). max, min un delta aprēķināšana ietver polinoma atvasinājuma aprēķināšanu (analītiski) un tā sakņu atrašanu (skaitliski). Atrisinot f(t) = 0, tiek meklētas polinoma saknes (skaitliski).

5 Taču šajā gadījumā -1 var izraisīt to, ka jūsu trigeris atjaunojas no problēmas stāvokļa. Lai būtu pilnībā aizsargāti, izmantojiet: timeleft(/host/vfs.fs.size[/,free],1h,0)<1h and ({TRIGGER.VALUE}=0 and timeleft(/host/vfs.fs.size[/,free],1h,0)<>-1 or {TRIGGER.VALUE}=1)