Algumas vezes h¨¢ sinais dos problemas que ocorrer?o. Estes sinais podem ser identificados de forma que a??es possam ser tomadas de antem?o para prevenir ou ao menos minimizar os impactos do problema.
O Áú»¢¶Ä²© possui ferramentas para predizer o comportamento futuro de um sistema monitorado baseado em seus dados hist¨®ricos. Estas ferramentas s?o disponibilizadas atrav¨¦s das fun??es de gatilho preditivas.
Duas coisas que se precisa conhecer ¨¦ como definir um estado de problema e quanto tempo ¨¦ necess¨¢rio para tomar uma a??o. Ent?o h¨¢ dois caminhos para configurar uma sinaliza??o de gatilho sobre uma situa??o indesejada em potencial. Primeiro: o gatilho deve disparar quando ¨¦ esperado que o sistema esteja em estado de problema ap¨®s o "tempo para agir". Segundo: o gatilho deve disparar quando o sistema alcan?ar¨¢ o estado de problema em menos do que o "tempo para agir".
Fun??es de gatilhos correspondentes para usar s?o forecast e timeleft. Note que a an¨¢lise estat¨ªstica subjacente ¨¦ basicamente id¨ºntica para ambas as fun??es. Voc¨º pode configurar um gatilho da maneira que preferir com resultados similares.
Ambas as fun??es utilizam praticamente o mesmo conjunto de par?metros. Use a lista de fun??es suportadas para refer¨ºncia.
Primeiro de tudo, voc¨º deve especificar o per¨ªodo hist¨®rico que o Áú»¢¶Ä²© deve analisar para chegar a uma predi??o. Voc¨º faz isso de uma forma familiar com o par?metro per¨ªodo de tempo
e mudan?a de tempo (time shift) opcional como voc¨º fez com as fun??es avg, count, delta, max, min e sum.
(apenas forecast)
O par?metro time
especifica quanto distante no futuro o Áú»¢¶Ä²© deve extrapolar as depend¨ºncia que ele encontra nos dados hist¨®ricos. N?o importa se voc¨º usar time_shift
ou n?o, time
¨¦ sempre contado a partir momento atual.
(apenas timeleft)
O par?metro threshold
especifica um valor que o item analisado deve alcan?ar, sem distin??o se a partir de cima ou de baixo. Uma vez que tenhamos determinado f(t) (veja abaixo) devemos solucionar a equa??o f(t) = threshold
e retornar a ra¨ªz que est¨¢ mais perto e ¨¤ direita de agora (now) ou 999999999999.9999 se n?o houver tal ra¨ªz.
Quando valores de item se aproximam do limite e ent?o o cruzam, timeleft assume que essa interse??o j¨¢ est¨¢ no passado e por isso alterna para a pr¨®xima interse??o com o n¨ªvel de threshold
, se houver algum. A boa pr¨¢tica deveria ser utilizar as predi??es como complemento aos diagn¨®sticos de problema ordin¨¢rios, e n?o como uma substitui??o.1
O ajuste (fit
) padr?o ¨¦ a fun??o linear. Mas se o seu sistema monitorado ¨¦ mais complexo voc¨º tem mais op??es para escolher.
fit |
x = f(t) |
---|---|
linear | x = a + b*t |
polynomialN2 (polinomial) |
x = a0 + a1*t + a2*t2 + ... + an*tn |
exponential (exponencial) |
x = a*exp(b*t) |
logarithmic (±ô´Ç²µ²¹°ù¨ª³Ù³¾¾±³¦´Ç) |
x = a + b*log(t) |
power (±è´Ç³Ù¨º²Ô³¦¾±²¹) |
x = a*tb |
(apenas forecast)
Cada vez que uma fun??o de gatilho ¨¦ avaliada ela obt¨¦m seus dados do per¨ªodo hist¨®rico especificado e ajusta uma fun??o especificada para os dados. Ent?o, se os dados forem ligeiramente diferentes a fun??o ajustada ser¨¢ ligeiramente diferente. Se n¨®s simplesmente calcularmos o valor da fun??o ajustada em um momento espec¨ªfico no futuro voc¨º n?o saber¨¢ nada sobre como ¨¦ esperado que o item analisado se comporte entre agora e aquele momento no futuro. Para algumas op??es de fit
(como polynomial) um simples valor do futuro pode ser enganoso.
modo |
resultado forecast |
---|---|
valor | f(now + time ) |
max | maxnow?<=?t?<=?now?+?time f(t) |
min | minnow?<=?t?<=?now?+?time f(t) |
delta | max - min |
avg | m¨¦dia de f(t) (now <= t <= now + time ) de acordo com |
Para evitar c¨¢lculos com n¨²meros enormes n¨®s consideramos o registro de data do primeiro valor no per¨ªodo especificado mais 1 ns como um novo tempo zero (zero-time) (tempo epoch atual ¨¦ de ordem 109, epoch ao quadrado ¨¦ 1018, dupla precis?o ¨¦ aproximadamente 10-16). 1 ns ¨¦ adicionado para fornecer todos os valores de tempo positivos para ajustes logarithmic e power que envolvem o c¨¢lculo de log(t). Altera??o de tempo (time shift) n?o afeta as fun??es linear, polynomial, exponential (al¨¦m de c¨¢lculos mais f¨¢ceis e mais precisos) mas altera a forma das fun??es logarithmic e power.
As fun??es retornam -1 em tais situa??es:
Nenhum alerta ou erros s?o apresentados se o ajuste (fit) escolhido descreve pobremente os dados providos ou se h¨¢ apenas poucos dados para um predi??o acurada.
Para receber um alerta quando voc¨º estiver prestes a ficar sem espa?o livre em disco no seu host, voc¨º deve usar uma express?o de gatilho como esta:
No entanto, o c¨®digo de erro -1 pode aparecer e colocar seu gatilho em um estado de problema. Geralmente isso ¨¦ bom porque voc¨º recebe um alerta de que suas predi??es n?o funcionam corretamente e voc¨º deve olhar para elas com mais cuidado para encontrar o por qu¨º. Mas algumas vezes ¨¦ ruim porque -1 pode simplesmente significar que n?o h¨¢ dados sobre o espa?o em disco livre no host obtidos na ¨²ltima hora. Se voc¨º estiver recebendo alertas de falso positivo demais considere usar uma express?o de gatilho mais elaborada 5:
A situa??o ¨¦ um pouco mais dif¨ªcil com forecast. Primeiro de tudo, -1 pode ou n?o colocar o gatilho em um estado de problema dependendo se voc¨º tiver uma express?o como forecast(/host/item,(...))<...
ou como forecast(/host/item,(...))>...
Al¨¦m do mais, -1 pode ser uma previs?o v¨¢lida se for normal o valor do item ser negativo. Mas a probabilidade desta situa??o em uma situa??o do mundo real ¨¦ desprez¨ªvel (veja como o operador = funciona). Ent?o adicione ... or forecast(/host/item,(...))=-1
ou ... and forecast(/host/item,(...))<>-1
se voc¨º quiser ou n?o tratar -1 como um problema, respectivamente.
Por exemplo, um gatilho simples como timeleft(/host/item,1h,X) < 1h
pode incorrer em estado de problema quando o valor do item se aproxima de X e ent?o de repente se recupera assim que o valor de X ¨¦ alcan?ado. Se o problema ¨¦ o valor do item estar abaixo de X use: last(/host/item) < X or timeleft(/host/item,1h,X) < 1h
. Se o problema ¨¦ o valor do item estar acima de X use: last(/host/item) > X or timeleft(/host/item,1h,X) < 1h
??
Grau polinomial pode ser de 1 a 6, polynomial1 ¨¦ equivalente a linear. No entanto, use graus polinomiais mais altos . Se o per¨ªodo de avalia??o cont¨¦m menos do que o necess¨¢rio para determinar os coeficientes polinomiais, o grau polinomial ser¨¢ diminu¨ªdo (p.e. polynomial5 ¨¦ requisitado, mas h¨¢ apenas 4 pontos, consequentemente polynomial3 ser¨¢ ajustado).??
Por exemplo o ajuste de fun??es exponential ou power envolvem o c¨¢lculo de log() dos valores do item. Se o dado cont¨¦m zeros ou valores negativos voc¨º ter¨¢ um erro pois log() ¨¦ definido apenas para valores positivos.??
Para ajustes linear, exponential, logarithmic e power todos os c¨¢lculos necess¨¢rios podem ser escritos explicitamente. Para polynomial apenas valor pode ser calculado sem quaisquer passos adicionais. O c¨¢lculo de avg envolve computa??o de antiderivativo polinomial (analiticamente). Computa??o de max, min e delta envolve computa??o de derivativo polinomial (analiticamente) e descoberta de suas ra¨ªzes (numericamente). A solu??o de f(t) = 0 envolve a descoberta das ra¨ªzes polinomiais (numericamente).??
Mas neste caso o -1 pode fazer com que seu gatilho se recupere do estado de problema. Para estar completamente protegido use: 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)
??