Áú»¢¶Ä²©

7 Itens calculados

7.1 Vis?o geral

Com os itens calculados voc¨º pode gerar novas informa??es a partir de dados coletados por outros itens.

Assim, itens calculados s?o uma forma de se criar fontes de dados virtuais. Os dados s?o periodicamente calculados baseados em uma express?o aritm¨¦tica. Todos os c¨¢lculos s?o feitos pelo Áú»¢¶Ä²© Server - nada ser¨¢ calculado pelos agentes ou proxies.

O dado resultante ser¨¢ armazenado no banco de dados do Áú»¢¶Ä²© como qualquer outro item - isso quer dizer que tanto as tabelas de hist¨®rico quanto as de m¨¦dias ser?o alimentadas para a r¨¢pida gera??o de gr¨¢ficos. Itens calculados podem ser utilizados em express?es de triggers, referenciados por macros ou outras entidades da mesma forma que qualquer outro item.

Para usar os itens calculados, selecione o Tipo Calculado.

7.2 Campos personalizados

A chave ¨¦ o identificador ¨²nico de item por host. Voc¨º pode definir qualquer nome de chave, contando que use os caracteres suportados.

Dever¨¢ ser informada a regra de c¨¢lculo no campo Formula. Virtualmente, n?o existe conex?o entre uma f¨®rmula e sua chave. Os par?metros da chave n?o ser?o utilizados na f¨®rmula.

A sintaxe de uma simples f¨®rmula pode ser definida como:

func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)

Onde:

Argumento Defini??o
func Uma das fun??es suportadas em uma express?o de trigger: last, min, max, avg, count, etc
key A chave de um outro item cujo dado seja necess¨¢rio na f¨®rmula. Podendo ser referenciado como key (chave) ou hostname:key.
Nota: Colocar a key entre aspas duplas ("...") ¨¦ recomend¨¢vel para evitar erros de an¨¢lise por conta de espa?os ou separadores de valores que poder?o existir na chave referenciada.
Se a chave a qual estejamos referenciado utilizar-se de aspas duplas, as mesmas dever?o ser escapadas pelo caractere "\". Veja o Exemplo 5 a seguir.
parameter(s) Qualquer par?metro adicional que possa ser necess¨¢rio.

Todos os itens referenciados por uma f¨®rmula de um item calculado dever?o existir e possuir algum dado coletado. Outro ponto importante ¨¦ que, ao contr¨¢rio do que ocorre nas triggers, os itens referenciados pela f¨®rmula, se tiverem suas chaves alteradas, dever?o ter suas chamadas na f¨®rmula manualmente alteradas.

As Macros de usu¨¢rio na f¨®rmula ser?o traduzidos se utilizados como refer¨ºncia para um par?metro ou constante. Por outro lado, elas n?o ser?o traduzidas se tentarem utiliza-las como uma fun??o, nome de host, chave ou operador.

F¨®rmulas mais complexas poder?o utilizar combina??o de fun??es, operadores e colchetes. Voc¨º pode utilizar todas as fun??es e operadores suportados pelas express?es de triggers. Observe que a sintaxe ¨¦ um pouco diferente, mas a l¨®gica e a preced¨ºncia ser¨¢ exatamente a mesma.

De forma diferente das express?es de trigger, o Áú»¢¶Ä²© processa os itens calculados de acordo com seu intervalo de atualiza??o, n?o considerando o recebimento de novos valores.

Um item calculado passar¨¢ para o estado de 'n?o suportado' sob v¨¢rias circunst?ncias:

  1. aus¨ºncia de item(s) referenciado(s)
  2. sem dados suficientes para calcular uma fun??o
  3. divis?o por zero
  4. sintaxe inv¨¢lida

O suporte aos itens calculados foi introduzido no Áú»¢¶Ä²© 1.8.1

7.3 Exemplos de uso

Exemplo 1

Calculando o percentual livre na parti??o '/'.

Use a fun??o last:

100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")

O Áú»¢¶Ä²© ir¨¢ usar o ¨²ltimo valor livre coletado para a parti??o e calcular¨¢ o percentual conforme a f¨®rmula.

Exemplo 2

Calcular a m¨¦dia de 10 minutos de valores processados pelo Áú»¢¶Ä²©.

Utilize a fun??o avg:

avg("Áú»¢¶Ä²© Server:zabbix[wcache,values]",600)

Observe que o uso de itens calculados em longos per¨ªodos de an¨¢lise de dados poder¨¢ afetar a performance do Áú»¢¶Ä²© server.

Exemplo 3

Calculando o total de banda trafegada em eth0.

Sumariza??o de duas fun??es:

last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")
Exemplo 4

Calculando o percentual do tr¨¢fego de entrada.

Uma f¨®rmula um pouco mais complexa:

100*last("net.if.in[eth0,bytes]")/(last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]"))
Exemplo 5

Utilizando itens agregados para calcular.

Especial ten??o sobre a forma que as aspas duplas das chaves s?o escapadas na f¨®rmula:

last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\"]")