- 7 Itens calculados
- Visão geral
- Campos configuráveis
- Fórmula de cálculo simples
- Agregações de dados
- Exemplos de itens calculados
- (1) Tráfego total na interface
- (2) Percentual de espaço livre em disco
- (3) Percentual do tráfego de entrada
- (4) Número médio de valores processados
- (5) Tráfego total de entrada para o host
- (6) Espaço total em disco para o grupo
- (7) Carga média do processador para o grupo
- (8) Carga média do processador por grupo e tag
- (9) Número médio de consultas para o grupo
- (10) Número total de verificações de DNS bem-sucedidas
- (11) Número total de itens não suportados para o grupo
- (12) Estatísticas de interface para o grupo
- Exemplos de sintaxe correta/incorreta
7 Itens calculados
Visão geral
Este tipo de item permite realizar cálculos sobre métricas que já existem. Um item calculado não coleta nenhum dado por si só.
Por exemplo, você pode querer:
- Contar dois valores.
- Calcular a média de vários valores de item.
- Calcular o valor total para um grupo de itens.
O valor resultante é armazenado no banco de dados do Zabbix como qualquer outro item; tanto os valores de histórico quanto os de tendências são armazenados, e gráficos podem ser gerados.
O cálculo é baseado em uma fórmula. A sintaxe da fórmula é compartilhada com as expressões de trigger.
Na verdade, é possível manter os triggers simples ao colocar uma lógica complexa de transformação de dados em um item calculado — e então referenciar o item calculado em um trigger usando a chave do item.
Existem duas possibilidades para especificar a fonte de dados para os cálculos:
- Especificar itens na fórmula.
- Fazer agregação de dados com base em um filtro que seleciona itens.
A segunda opção permite calcular médias de grupos, totais etc.
Todos os cálculos são realizados pelo Zabbix server; proxy ou agents não estão envolvidos de forma alguma. Observe que o uso extensivo de itens calculados com longos períodos de tempo pode afetar o desempenho do server.
Campos configuráveis
Para usar itens calculados, escolha o tipo de item Calculated.

A key é um identificador único do item (por host). Você pode criar qualquer nome de key usando os símbolos suportados. A key permite referenciar o item calculado em triggers.
A definição do cálculo deve ser inserida no campo Formula.
Não há conexão entre a fórmula e a key. Os parâmetros da key não são usados na fórmula de nenhuma forma.
Diferentemente 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.
Observe que, se você selecionar Numeric (unsigned) como tipo de informação e o resultado do cálculo for um valor float, ele será truncado para um inteiro.
Fórmula de cálculo simples
A sintaxe de uma fórmula simples é:
function(/host/key,<parameter1>,<parameter2>,...)
onde:
| Elemento | Descrição |
|---|---|
function |
Uma das funções suportadas: last, min, max, avg, count, etc |
host |
Host do item que é usado para o cálculo. O host atual pode ser omitido (ou seja, como em function(//key,parameter,...)). |
key |
Chave do item que é usado para o cálculo. Items que retornam valores com o tipo de dado binário ou JSON não são suportados. Se você alterar a chave do item de um item referenciado, a chave deverá ser atualizada manualmente na fórmula. Todos os items referenciados por funções de histórico devem existir e estar coletando dados. |
parameter(s) |
Parâmetros da função, se necessário. Sufixos de tempo e sufixos de tamanho de memória são suportados. |
Uma fórmula mais complexa pode usar uma combinação de funções, operadores e parênteses.
Veja exemplos de fórmulas de item calculado:
- (1) Tráfego total na interface
- (2) Porcentagem de espaço livre em disco
- (3) Porcentagem de tráfego de entrada
- (4) Número médio de valores processados
Algumas variáveis podem ser passadas para a fórmula com macros de usuário.
Observe que as macros de usuário serão resolvidas somente se usadas para referenciar um parâmetro de função, parâmetro de filtro de item ou uma constante.
As macros de usuário NÃO serão resolvidas se estiverem referenciando uma função, nome do host, chave do item, parâmetro de chave do item ou operador.
A comparação com strings é permitida.
Se não houver dados recentes no cache e não houver um período de consulta definido na função, o Zabbix, por padrão, buscará no passado até uma semana para consultar o banco de dados em busca de valores históricos.
Um item calculado pode se tornar não suportado em vários casos:
- item referenciado
- não é encontrado
- está desabilitado ou pertence a um host desabilitado
- não é suportado (exceto com a função nodata() e operadores com valores desconhecidos)
- não há dados para calcular uma função
- divisão por zero
- sintaxe incorreta usada
Agregações de dados
As agregações de dados são baseadas em um filtro que seleciona múltiplos itens. As agregações de dados também são um tipo de item calculado, porém, você usa uma sintaxe ligeiramente diferente na fórmula.
Para obter agregações, use uma das funções de agregação suportadas: avg, max, min, sum, etc.
Em seguida, adicione a função foreach como o único parâmetro e seu filtro de item para selecionar os itens necessários:
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
Uma função foreach (por exemplo, avg_foreach, count_foreach, etc.) retorna um valor agregado para cada item selecionado.
Os itens são selecionados usando o filtro de item (/host/key?[group="host group"]), a partir do histórico do item.
Para mais detalhes, consulte funções foreach.
Se alguns dos itens não tiverem dados para o período solicitado, eles serão ignorados no cálculo. Se nenhum item tiver dados, a função retornará um erro.
Como alternativa, você pode listar vários itens como parâmetros para agregação:
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
Observe que function aqui deve ser uma função de histórico/tendência.
Veja exemplos de cálculos de agregação:
- (5) Tráfego de entrada total para o host
- (6) Espaço total em disco para o grupo
- (7) Carga média do processador para o grupo
- (8) Carga média do processador para o grupo e tag
- (9) Número médio de valores processados
- (10) Número médio de consultas para o grupo
- (11) Número total de verificações DNS bem-sucedidas
- (12) Número total de itens não suportados para o grupo
- (13) Estatísticas de interface para o grupo
Macros de usuário e macros de descoberta de baixo nível são suportadas em:
- parâmetros de chave de item
- parâmetros de função
- condições de filtro (nome do grupo de hosts e nome da tag)
- constantes da expressão
Um cálculo de agregação pode se tornar não suportado se:
- nenhum dos itens referenciados for encontrado (o que pode acontecer se a chave do item estiver incorreta, nenhum dos itens existir ou todos os grupos incluídos estiverem incorretos)
- não houver dados para calcular uma função
Exemplos de itens calculados
(1) Tráfego total na interface
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Calcula a largura de banda total na eth0.
(2) Percentual de espaço livre em disco
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
O Zabbix obterá os valores mais recentes de espaço livre e espaço total em disco (em /) e calculará o percentual de acordo com a fórmula fornecida.
(3) Percentual do tráfego de entrada
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
Calcula o percentual do tráfego de entrada em relação ao tráfego total.
(4) Número médio de valores processados
avg(/Zabbix server/zabbix[wcache,values],10m)
Calcula uma média de 10 minutos do número de valores processados pelo Zabbix.
(5) Tráfego total de entrada para o host
sum(last_foreach(/host/net.if.in[*]))
Calcula o total de todos os itens que correspondem a net.if.in[*] no host.
(6) Espaço total em disco para o grupo
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Calcula o espaço total em disco para todos os MySQL Servers.
(7) Carga média do processador para o grupo
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Calcula a carga média do processador para todos os MySQL Servers.
(8) Carga média do processador por grupo e tag
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Calcula a carga média da CPU em todos os hosts de vários grupos de hosts que possuem tags específicas.
(9) Número médio de consultas para o grupo
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Calcula a média de 5 minutos do número de consultas por segundo para MySQL Servers.
(10) Número total de verificações de DNS bem-sucedidas
sum(last_foreach(/*/net.dns[*,*,*]))
Calcula o número total de verificações de DNS bem-sucedidas em todos os hosts.
O formulário de item mostrado é net.dns[192.0.2.0,example.com,A] como exemplo de uma possível chave.
Observe que os curingas devem corresponder ao número de parâmetros na chave (aqui net.dns tem três parâmetros: ip, name, type).
(11) Número total de itens não suportados para o grupo
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Calcula o número total de itens não suportados para Zabbix servers.
(12) Estatísticas de interface para o grupo
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Calcule as estatísticas de interface para o grupo video.
Exemplos de sintaxe correta/incorreta
Expressões (incluindo chamadas de função) não podem ser usadas como parâmetros de função de histórico, tendência ou foreach. No entanto, essas próprias funções podem ser usadas em outros parâmetros de função (não históricos).
| Expressão | Exemplo |
|---|---|
| Válida | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100)max(avg(avg_foreach(/*/system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m))) |
| Inválida | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
Observe que, em uma expressão como:
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
não é possível garantir que ambas as partes da equação sempre terão o mesmo conjunto de valores. Enquanto uma parte da expressão é avaliada, um novo valor para o período solicitado pode chegar, e então a outra parte da expressão terá um conjunto de valores diferente.