Algumas vezes existem sinais de problemas que est?o chegando. Estes sinais podem ser percebidos e possibilitar a execu??es de a??es preventivas ou minimizadoras dos impactos do incidente.
O Áú»¢¶Ä²© tem ferramentas para capazes de prever o comportamento futuro do ambiente monitorado a partir de seus dados hist¨®ricos. Estas ferramentas s?o chamadas de fun??es preditivas.
Para trabalhar com estas fun??es n¨®s precisamos definir duas coisas: como detectar o futuro estado de problema e quanto tempo ¨¦ necess¨¢rio para as contra-medidas. Uma vez que tenhamos ambas as informa??es temos duas formas de configurar a sinaliza??o da trigger para uma situa??o indesej¨¢vel. * Primeiro: a trigger pode ser disparada ap¨®s o tempo limite em que se espera que o pr¨®prio sistema se recupere. * Segundo: a trigger pode ser disparada antes do tempo limite definido. As fun??es de trigger correspondentes s?o: forecast e timeleft. Observe que a an¨¢lise estat¨ªstica subjacente ¨¦ basicamente id¨ºntica para ambas as fun??es. Voc¨º pode configurar a trigger da forma que preferir, com resultados semelhantes
Ambas as fun??es utilizam o mesmo conjunto de par?metros. Utilize a lista de fun??es suportadas como refer¨ºncia.
O primeiro passo ¨¦ definir um per¨ªodo hist¨®rico que o Áú»¢¶Ä²© ir¨¢ analizar para a previs?o. Voc¨º pode configurar isso de formas conhecidas como os par?metros sec
ou #num
e com o opcional time_shift
da mesma forma que faz com as fun??es avg, count, delta, max, min e sum.
(forecast apenas)
O par?metro time
especifica qu?o longe no futuro o Áú»¢¶Ä²© dever¨¢ extrapolar as depend¨ºncias que encontrar nos dados hist¨®ricos. N?o importa se voc¨º utilizar o par?metro time_shift
ou n?o, time
sempre ser¨¢ contabilizado a partir do momento corrente.
(timeleft apenas)
O par?metro threshold
especifica um valor analisado que determinado item tem que chegar, nao importa se for superior ou inferior. Uma vez que determinemos 'f(t)' (veja a seguir) que deve resovler a equa??o 'f(t)' = threshold
e retornar que a origem est¨¢ mais proxima de agora ou mais distante de agora at¨¦ 999999999999.9999 se n?o for encontrada a origem.
Quando os valores do item se aproximarem do limiar e, em seguida, ultrapassa-lo timeleft assume que a intersec??o j¨¢ ¨¦ passada e muda o estado apra a pr¨®xima intersec??o limite, se ouver. ? uma boa pr¨¢tica utilizar as predi??es de forma complementar ¨¤ detec??o normal de incidentes, n?o como uma substitui??o.1
O 'ajuste' (fit) padr?o ¨¦ uma fun??o linear. Mas se seu sistema monitorado ¨¦ mais complicado existem outras op??es.
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 |
(forecast Apenas)
Toda vez que uma fun??o de trigger ¨¦ avaliada ela recebe dados de determinado per¨ªodo do hist¨®rico e utiliza uma fun??o nos dados. Assim, se os dados estiverem ligeiramente diferentes, os resultados tamb¨¦m o ser?o. Se n¨®s simplesmente calcularmos o valor da fun??o de ajuste em um determinado tempo no futuro voc¨º n?o ver¨¢ nada sobre como o item analisado se comportar¨¢ at¨¦ l¨¢. Em alguns modos de ajuste (tal qual o polynomial) uma vis?o simples do futuro pode ser enganosa.
mode |
forecast resultado |
---|---|
value | 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 imensos n¨®s consideramos que o carimbo de hora do primeiro valor especificado no per¨ªodo somado a 1 ns como um novo momento zero (o 'epoch' atual ¨¦ da ordem de 10 9, o quadrado do 'epoch' 1018, a precis?o dupla¨¦ de cerca de 10-16). 1 ns ¨¦ adicionado para prover todos os valores positivos de tempo para ajustar logarithmic e power encaixando co c¨¢lculo do log(t). A mudan?a de tempo n?o afeta linear, polynomial, exponential (al¨¦m de c¨¢lculos mais f¨¢ceis e precisos) mas muda a forma das fun??es de logarithmic e power.
As fun??es retornam -1 nas seguintes situa??es:
N?o h¨¢ avisos ou erros sinalizados se o ajuste escolhido descrever mal os dados escolhidos ou existirem poucos dados para uma previs?o precisa.
Para receber um aviso quando voc¨º est¨¢ prestes a ficar sem espa?o em disco em um host voc¨º pode criar uma express?o de trigger similar ¨¤ esta:
No entando, o c¨®digo de erro -1 pode surgir e habilitar a sua trigger em um estado de 'incidente'. Normalmente isso pode ser bom pois voc¨º receber¨¢ um aviso que suas predi??es na? est?o funcionando corretamente e voc¨º dever¨¢ analisa-la com mais cuidado. Mas em algumas vezes o -1 pode ser ruim pois pode indicar simplesmente que n?o existiam dados sobre espa?o livre em disco coletados na ¨²ltima hora. Caso ocorram falso-positivos pode ser interessante o uso de express?es de disparo mais complexas: {host:vfs.fs.size[/,free].timeleft(1h,,0)}<1h and ({TRIGGER.VALUE}=0 and {host:vfs.fs.size[/,free].timeleft(1h,,0)}<>-1 or {TRIGGER.VALUE}=1)
)):
A situa??o ¨¦ um pouco mais dif¨ªcil com forecast. Primeiramente, -1 pode ou n?o colocar a trigger em estado de 'incidente' dependendo de ter ou n?o uma express?o similar a: {host:item.forecast(...)}<...
or like {host:item.forecast(...)}>...
Al¨¦m disso, -1 pode ser uma proje??o v¨¢lida se ¨¦ normal para o valor do item a ser negativo. Mas a probabilidade de esta situa??o ocorrer no mundo real ¨¦ insignificante (veja como o operador = funciona). Ent?o adicione ... or {host:item.forecast(...)}=-1
ou ... and {host:item.forecast(...)}<>-1
se voc¨º desejar ou n?o tratar o valor -1 como um problema.
Por exemplo, um c¨®digo simples de trigger como {host:item.timeleft(1h,,X)} < 1h
pode entrar em estado de 'incidente' quando o valor do item X subitamente se aproximar de X e subtamente se recuperar quando se afastar de X. Se o problema ¨¦ o valor do item abaixo de X: {host:item.last()} < X or {host:item.timeleft(1h,,X)} < 1h
Se o problema ¨¦ o valor do item acima de X use: {host:item.last()} > X or {host:item.timeleft(1h,,X)} < 1h
??
O grau polimonial pode ser de 1 a 6, polynomial1 ¨¦ equivalente a linear. Mas ¨¦ poss¨ªvel utilizar polim?nios mais elevados . Se o per¨ªodo de an¨¢lise contiver menos pontos do que o necess¨¢rio para determinar os coeficientes polimoniais o grau polimonial ser¨¢ reduzido (ex. ¨¦ solicitado polynomial5, mas s¨® existem 4 pontso, logo ser¨¢ alcan?ado o polynomial3.??
Para linear, exponential, logarithmic e power o ajuste de todos os c¨¢lculos podem ser escritos explicitamente. Para polynomial apenas value pode ser calculado sem passos adicionais. Calculo de avg envolve computa??o polimonial antiderivada (anal¨ªtica). Computando max, min e delta envolve computa?a? polimonial derivativa (analiticamente) e encontrar suas raizes (num¨¦ricas). A solu??o de 'f(t) = 0' implica encontrar raizes polimoniais (num¨¦ricas).??