Понекад постоје знаци предстојећег проблема. Ови знаци могу бити уочено тако да се унапред могу предузети радње за спречавање или бар минимизирајте утицај проблема.
Zabbix има алате за предвиђање будућег понашања надгледаног система на основу историјских података. Ови алати се реализују кроз предиктивне функције окидача.
Пре постављања окидача, потребно је дефинисати шта је проблемско стање и како потребно је много времена да се предузме акција. Затим постоје два начина за постављање а активирати сигнализацију о потенцијалној нежељеној ситуацији. Прво: окидач мора да се активира када се очекује да ће систем бити у проблематичном стању после "време за деловање". Друго: окидач мора да се активира када је систем ће доћи до проблематичног стања за мање од "времена за акцију". Одговарајуће функције окидача које треба користити су прогноза и преостало време. Имајте на уму да је основна статистичка анализа у основи идентичне за обе функције. Можете подесити окидач на било који начин преферирају са сличним резултатима.
Обе функције користе скоро исти скуп параметара. Користите листу подржане функције за референцу.
Пре свега, требало би да наведете историјски период који Zabbix треба анализирајте да бисте дошли до предвиђања. Радите то на познат начин значи параметар временски период
и опциони временски помак као што радите то са avg, count, delta, max, min и sum функције.
(само прогноза)
Параметар време
одређује колико далеко у будућности треба Zabbix екстраполира зависности које налази у историјским подацима. Без обзира да ли користите time_shift
или не, време
се увек рачуна почевши од тренутног тренутак.
(само преостало време)
Параметар threshold
одређује вредност коју анализирана ставка мора да достигне, нема разлике да ли одозго или одоздо. Једном када смо одредили f(t) (види доле), требало би да решимо једначину f(t) = threshold
и вратимо корен који је ближи сада и десно од сада или 1.7976931348623158Е+308 ако не постоји такав корен.
Када се вредности ставке приближе прагу, а затим пређу то, преостало време претпоставља да је раскрсница већ у прошлости и стога прелази на следећу раскрсницу са нивоом threshold
, ако било који. Најбоља пракса би требало да буде коришћење предвиђања као допуна обична дијагностика проблема, а не као замена.1
Подразумевано fit
је линеарна функција. Али ако је ваш надгледани систем компликованије, имате више опција за избор.
fit |
x = f(t) |
---|---|
linear | x = a + b*t |
polynomialN2 | x = a0 + a1*t + a2*t2 + ... + an*tn |
exponential | x = a*exp(b*t) |
logarithmic | x = a + b*log(t) |
power | x = a*tb |
(само прогноза)
Сваки пут када се процењује функција окидача, она добија податке из специфицирани период историје и уклапа одређену функцију у податке. дакле, ако су подаци мало другачији, уграђена функција ће бити мало другачије. Ако једноставно израчунамо вредност уграђене функције на а одређено време у будућности, нећете знати ништа о томе како Очекује се да ће се анализирани предмет понашати између сада и тог тренутка у будућност. За неке опције fit
(као што је полином) једноставна вредност из будућност може бити варљива.
mode |
forecast result |
---|---|
value | f(now + time ) |
max | maxnow <= t <= now + time f(t) |
min | minnow <= t <= now + time f(t) |
delta | max - min |
avg | average of f(t) (now <= t <= now + time ) according to definition |
Да бисмо избегли прорачуне са огромним бројевима, узимамо у обзир временску ознаку прва вредност у наведеном периоду плус 1 ns као ново нулто време (тренутни време епохе је реда 109, епоха на квадрат је 1018, двострука прецизност је око 10-16). 1 нс се додаје да обезбеди све позитивне временске вредности за логаритамско и повер уклапање које укључује израчунавање лог(t). Време померање не утиче на линеарно, полиномско, експоненцијално (осим лакши и прецизнији прорачуни) али мења облик од логаритамске и потенцијске функције.
Функције враћају -1 у таквим ситуацијама:
Никаква упозорења или грешке се не означавају ако се одабрано не уклапа описује дате податке или је једноставно премало података за тачне предвиђање.
Да добијете упозорење када вам понестане слободног простора на диску ваш домаћин, можете користити израз окидача као што је овај:
Међутим, код грешке -1 може доћи у игру и ставити ваш окидач у а проблемско стање. Генерално, то је добро јер добијате упозорење да је ваш предвиђања не функционишу исправно и требало би да их више погледате темељно да сазнам зашто. Али понекад је лоше јер -1 може једноставно значи да није било података о слободном диску домаћина добијених у последњи час. Ако добијате превише лажних позитивних упозорења, размислите о коришћењу компликованијег израза окидача 5:
Са прогнозом ситуација је нешто тежа. пре свега, -1 може или не мора довести окидач у стање проблема у зависности од да ли имате израз као што је forecast(/host/item,(...))<...
или као што је forecast(/host/item,(...))>...
Штавише, -1 може бити важећа прогноза ако је то нормално за ставку вредност да буде негативна. Али вероватноћа ове ситуације у стварности светска ситуација је занемарљива (види како оператор = ради). Дакле додајте ... or forecast(/host/item,(...))=-1
или ... and forecast(/host/item,(...))<>-1
ако желите или не желите третирати -1 као проблем респективно.
1 На пример, једноставан окидач као timeleft(/host/item,1h,X) < 1h
може прећи у проблем када вредност ставке се приближава X, а затим се изненада опорави када вредност X буде достигао. Ако је проблем што је вредност ставке испод X, користите: last(/host/item) < X or timeleft(/host/item,1h,X) < 1h
Ако проблем је што је вредност ставке изнад употребе X: last(/host/item) > X or timeleft(/host/item,1h,X) < 1h
2 Полиномски степен може бити од 1 до 6, полином1 је еквивалентан до линеарног. Међутим, користите полиноме вишег степена са опрез. Ако је период евалуације садржи мање бодова него што је потребно за утврђивање коефицијенти полинома, степен полинома ће бити смањен (нпр. полином5 је тражен, али постоје само 4 тачке, дакле полином3 ће бити уграђен).
3 На пример, уклапање exponential или power функција укључује израчунавање лог() вредности ставки. Ако подаци садрже нуле или негативне бројева, добићете грешку пошто је лог() дефинисан као позитиван само вредности.
4 За linear, exponential, logarithmic и power одговара свима неопходни прорачуни могу бити написани експлицитно. За polynomial само вредност се може израчунати без додатних корака. Израчунавање просечне вредности укључује израчунавање полинома антидеривата (аналитички). Рачунање max, min и delta укључује израчунавање извода полинома (аналитички) и проналажење његових корена (бројчано). Решавање f(t) = 0 подразумева проналажење корена полинома (бројчано).
5 Али у овом случају -1 може довести до опоравка вашег окидача од проблемско стање. Да бисте били потпуно заштићени користите: 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)