Prognozējošās trigeru funkcijas

Pārskats

Dažreiz ir pazīmes, kas liecina par gaidāmu problēmu. Šīs pazīmes var pamanīt, lai jau iepriekš varētu veikt darbības, kas novērstu problēmu vai vismaz samazinātu tās ietekmi.

Zabbix piedāvā rīkus, lai prognozētu uzraudzītās sistēmas turpmāko uzvedību, pamatojoties uz vēsturiskajiem datiem. Šie rīki ir realizēti, izmantojot prognozējošās trigeru funkcijas.

Funkcijas

Pirms trigeris iestatīšanas ir nepieciešams noteikt, kas ir problēmas stāvoklis un cik daudz laika ir nepieciešams, lai rīkotos. Pēc tam ir divi veidi, kā iestatīt trigeris, kas signalizē par iespējamu nevēlamu situāciju. Pirmais: trigeris jānostrādā, kad ir sagaidāms, ka sistēma nonāks problēmas stāvoklī pēc "laika rīcībai". Otrais: trigeris jānostrādā, kad sistēma sasniegs problēmas stāvokli mazāk nekā "laikā rīcībai". Atbilstošās trigeris funkcijas, ko izmantot, ir forecast un timeleft. Ņemiet vērā, ka pamatā esošā statistiskā analīze abām funkcijām būtībā ir identiska. Jūs varat iestatīt trigeris jebkurā no šiem veidiem pēc savas izvēles, iegūstot līdzīgus rezultātus.

Parametri

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

Laika intervāls

Vispirms jums jānorāda vēsturiskais periods, kuru Zabbix vajadzētu analizēt, lai izveidotu prognozi. To var izdarīt ierastajā veidā, izmantojot parametru time period un neobligātu 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 ne, time vienmēr tiek skaitīts, sākot no pašreizējā brīža.

Sasniedzamais slieksnis

(tikai timeleft)\
Parametrs threshold norāda vērtību, kas analizētajam vienumam jāsasniedz, neatkarīgi no tā, vai no augšas vai no apakšas. Kad esam noteikuši f(t) (skatiet zemāk), mums jāatrisina vienādojums f(t) = threshold un jāatgriež sakne, kas ir tuvāk pašreizējam brīdim un atrodas pa labi no tā, 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 šis krustpunkts jau ir pagātnē, un tāpēc pārslēdzas uz nākamo krustpunktu ar threshold līmeni, ja tāds ir. Ieteicamā prakse ir izmantot prognozes kā papildinājumu parastajai problēmu diagnostikai, nevis kā aizstājēju.1

Aproksimācijas funkcijas

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

fit x = f(t)
linear x = a + b*t
polynomialN2 x = a~0~ + a~1~*t + a~2~*t2 + ... + a~n~*tn
exponential x = a*exp(b*t)
logarithmic x = a + b*log(t)
power x = a*tb
Režīmi

(tikai forecast)
Katru reizi, kad tiek novērtēta trigera funkcija, tā iegūst datus no norādītā vēstures perioda un pielāgo datiem norādītu funkciju. Tāpēc, ja dati nedaudz atšķiras, arī pielāgotā funkcija 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 neuzzināsiet neko par to, kā analizētais vienums, visticamāk, uzvedīsies starp pašreizējo brīdi 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(tagad + time)
max max~tagad\ <=\ t\ <=\ tagad\ +\ time~ f(t)
min min~tagad\ <=\ t\ <=\ tagad\ +\ time~ f(t)
delta max - min
avg f(t) vidējā vērtība (tagad <= t <= tagad + time) saskaņā ar definīciju

Detalizēta informācija

Lai izvairītos no aprēķiniem ar ļoti lieliem skaitļiem, mēs uzskatām pirmās vērtības laikspiedolu norādītajā periodā plus 1 ns par jaunu nulles laiku (pašreizējais epoch laiks ir 109 kārtā, epoch kvadrāts ir 1018, dubultā precizitāte ir aptuveni 10-16). 1 ns tiek pievienota, lai nodrošinātu visas pozitīvās laika vērtības logaritmiskajām un pakāpes aproksimācijām, kurās tiek aprēķināts log(t). Laika nobīde neietekmē lineārās, polinomiālās, eksponenciālās aproksimācijas (izņemot to, ka aprēķini kļūst vienkāršāki un precīzāki), bet maina logaritmisko un pakāpes funkciju formu.

Iespējamās kļūdas

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

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

Brīdinājumi vai kļūdas netiek norādītas, ja izvēlētā aproksimācija vāji apraksta sniegtos datus vai arī precīzai prognozēšanai datu ir vienkārši pārāk maz.

Piemēri un kļūdu apstrāde

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

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

Tomēr kļūdas kods -1 var ietekmēt rezultātu un pārslēgt jūsu trigeri problēmas stāvoklī. Kopumā tas ir labi, jo saņemat brīdinājumu, ka jūsu prognozes nedarbojas korekti un tās vajadzētu rūpīgāk pārbaudīt, lai noskaidrotu iemeslu. Taču dažreiz tas ir slikti, jo -1 var vienkārši nozīmēt, ka pēdējās stundas laikā netika 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 trigera izteiksmi 5:

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

Situācija ir nedaudz sarežģītāka ar forecast. Pirmkārt, -1 var vai nevar pārslēgt trigeri problēmas stāvoklī atkarībā no tā, vai jums ir izteiksme, piemēram, forecast(/host/item,(...))<..., vai izteiksme, piemēram, forecast(/host/item,(...))>...

Turklāt -1 var būt derīga prognoze, ja vienuma vērtībai ir normāli būt negatīvai. Taču šādas situācijas iespējamī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 attiecīgi vēlaties vai nevēlaties uzskatīt -1 par problēmu.

Piezīmes

1 Piemēram, vienkāršs trigeris, piemēram, timeleft(/host/item,1h,X) < 1h, var pāriet problēmas stāvoklī, kad vienuma 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āda, ka vienuma vērtība ir zemāka par X, izmantojiet: last(/host/item) < X or timeleft(/host/item,1h,X) < 1h Ja problēma ir tāda, ka vienuma vērtība ir augstāka par 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 periods satur mazāk punktu, nekā nepieciešams polinoma koeficientu noteikšanai, polinoma pakāpe tiks samazināta (piemēram, 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 vienuma vērtību log() aprēķināšanu. Ja dati satur nulles vai negatīvus skaitļus, tiks saņemta kļūda, jo log() ir definēts tikai pozitīvām vērtībām.

4 linear, exponential, logarithmic un power pielāgojumiem visus nepieciešamos aprēķinus var uzrakstīt tieši. polynomial gadījumā bez papildu darbībām var aprēķināt tikai value. avg aprēķināšana ietver polinoma pirmatvasinājuma (analītisku) aprēķināšanu. max, min un delta aprēķināšana ietver polinoma atvasinājuma (analītisku) aprēķināšanu un tā sakņu atrašanu (skaitliski). f(t) = 0 atrisināšana ietver polinoma sakņu atrašanu (skaitliski).

5 Taču šajā gadījumā -1 var izraisīt jūsu trigera atjaunošanos no problēmas stāvokļa. Lai būtu pilnībā aizsargāts, 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)