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,
kā 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)