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 Zabbix Server - nada será calculado pelos agentes ou proxies.

O dado resultante será armazenado no banco de dados do Zabbix 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 Zabbix 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 Zabbix 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 Zabbix 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 Zabbix.

Utilize a função avg:

avg("Zabbix 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 Zabbix 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\"]")