7 Itens calculados

Visão geral

Com itens calculados, é possível criar cálculos com base nos valores de outros itens.

Os cálculos podem utilizar:

  • valores únicos de itens individuais
  • filtros complexos para selecionar múltiplos itens para agregações (consulte aggregate calculations para mais detalhes)

Assim, itens calculados são uma forma de criar fontes de dados virtuais. Todos os cálculos são realizados apenas pelo servidor do Zabbix. Os valores são periodicamente calculados com base na expressão aritmética utilizada.

Os dados resultantes são armazenados no banco de dados do Zabbix como qualquer outro item; tanto os valores históricos quanto as tendências são armazenados, e gráficos podem ser gerados.

Se o resultado do cálculo for um valor float, ele será arredondado para um inteiro se o tipo de informação do item calculado for Numérico (sem sinal).

Os itens calculados compartilham sua sintaxe com expressions de trigger. A comparação com strings é permitida nos itens calculados. Itens calculados podem ser referenciados por macros ou outras entidades da mesma forma que qualquer outro tipo de item.

Para usar itens calculados, escolha o tipo de item Calculado.

Campos configuráveis

A chave é um identificador único de item (por host). Você pode criar qualquer nome de chave usando símbolos suportados.

A definição de cálculo deve ser inserida no campo Fórmula. Não há uma conexão direta entre a fórmula e a chave, ou seja, os parâmetros da chave não são utilizados na fórmula de nenhuma forma.

A sintaxe de uma fórmula simples é:

function(/host/key,<parameter1>,<parameter2>,...)

onde:

função Uma das funções suportadas supported functions: last, min, max, avg, count, etc
host Host do item utilizado para o cálculo.
O host atual pode ser omitido (por exemplo, como em function(//key,parameter,...)).
chave Chave do item utilizado para o cálculo.
parâmetros (s) Parâmetros da função, se necessário.

Macros de usuários User macros na fórmula serão expandidas caso sejam usadas para referenciar um parâmetro de função, parâmetro de filtro de item ou uma constante. As macros do usuário NÃO serão expandidas ao referenciar uma função, nome de host, chave do item, parâmetro de chave do item ou operador.

Uma fórmula mais complexa pode usar uma combinação de funções, operadores e parênteses. Você pode usar todas as funções e operators operadores suportados em expressões de trigger. A lógica e a precedência dos operadores são exatamente as mesmas.

Diferente das expressões de trigger, o Zabbix processa itens calculados de acordo com o intervalo de atualização do item, e não ao receber um novo valor.

Todos os itens referenciados por funções de histórico na fórmula do item calculado devem existir e estar coletando dados. Além disso, se você alterar a chave de um item referenciado, deverá atualizar manualmente qualquer fórmula que use essa chave.

Um item calculado pode se tornar não suportado em vários casos:

  • item (s) referenciado (s)
    • não encontrado
    • está desativado
    • pertence a um host desativado
    • não é suportado (exceto com a função nodata() e operadores operators com valores desconhecidos)
  • sem data para calcular uma função
  • divisão por zero
  • sintaxe incorreta utilizada

Exemplos de uso

Exemplo 1

Cálculo de porcentagem de espaço livre em disco em '/'.

Uso da função last:

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

O Zabbix obterá os valores mais recentes para os espaços livre e total do disco e calculará a porcentagem de acordo com a fórmula dada.

Exemplo 2

Cálculo da média de 10 minutos do número de valores processados pelo Zabbix.

Uso da função avg:

avg(/Zabbix Server/zabbix[wcache,values],10m)

Note que o uso extensivo de itens calculados com longos períodos de tempo pode afetar a performance do Zabbix Server.

Exemplo 3

Cálculo de banda de rede total em eth0.

Soma de duas funções:

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

Calculando a porcentagem do tráfego de entrada.

Expressão mais complexa:

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

Consulte também: Exemplos de cálculos agregados