Áú»¢¶Ä²©

8 Triggers - Fun??es preditivas

Vis?o geral

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.

1 Fun??es

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

2 Par?metros

Ambas as fun??es utilizam o mesmo conjunto de par?metros. Utilize a lista de fun??es suportadas como refer¨ºncia.

2.1 Intervalo de tempo

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.

2.2 Previs?o de horizonte

(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.

2.3 Limiar a alcan?ar

(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

2.4 Fun??es de ajustes

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
2.5 Modos

(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

3 Detalhes

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.

4 Erros potenciais

As fun??es retornam -1 nas seguintes situa??es:

  • o per¨ªodo de avalia??o definido n?o cont¨ºm dados;
  • o resultado da opera??o matem¨¢tica n?o est¨¢ definido ( por exemplo o ajuste de fun??es exponential ou power envolvem o c¨¢lculo do log() de valores de itens. Se o dado cont¨ºm valores zerados ou negativos voc¨º receber¨¢ um erro uma vez que a fun??o de log() ¨¦ definida apenas para valores positivos.));
  • complica??es num¨¦ricas (infelizmente, para alguns conjuntos de intervalos de dados de entrada a precis?o dupla e ponto flutuante se mostram insuficientes) 3.

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.

5 Exemplos e tratativa de erros

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:

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

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))):

{host:vfs.fs.size[/,free].timeleft(1h,,0)}<1h and {host:vfs.fs.size[/,free].timeleft(1h,,0)}<>-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.

Veja tamb¨¦m

  1. em zabbix.org

  1. 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??

  2. 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.??

  3. 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).??