[comment]: # ({19cf85e8-bfe1a94d})
# 1 Cálculos agregados

[comment]: # ({/19cf85e8-bfe1a94d})

[comment]: # ({96203d1d-f8e62abe})
#### Visão geral

Os cálculos agregados são um tipo de [item calculado](/manual/config/items/itemtypes/calculated) que permite coletar informações de vários items pelo Zabbix server e, em seguida, calcular um agregado, dependendo da função de agregação utilizada.

Os cálculos agregados não exigem nenhum agent em execução no host monitorado.

[comment]: # ({/96203d1d-f8e62abe})

[comment]: # ({ab0c22a1-63d83a0c})
#### Sintaxe

Para recuperar agregações, use uma das [funções de agregação](/manual/appendix/functions/aggregate) 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:

```default
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](/manual/appendix/functions/aggregate/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:

```default
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
```

Observe que `function` aqui deve ser uma função de histórico/tendência.

::: noteclassic
Se a agregação resultar em um valor float, ele será convertido para inteiro se o tipo de informação do item agregado for *Numérico (sem sinal)*.
:::

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 agregado 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

[comment]: # ({/ab0c22a1-63d83a0c})

[comment]: # ({3bbe172c-3bbe172c})
#### Exemplos de uso

Exemplos de chaves para cálculos agregados.

[comment]: # ({/3bbe172c-3bbe172c})

[comment]: # ({1306478c-874bcf94})
##### Exemplo 1

Espaço total em disco do grupo de hosts 'MySQL Servers'.

```default
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
```

[comment]: # ({/1306478c-874bcf94})

[comment]: # ({5c3dc788-3182672a})
##### Exemplo 2

Soma dos valores mais recentes de todos os items que correspondem a net.if.in\[\*\] no host.

```default
sum(last_foreach(/host/net.if.in[*]))
```

[comment]: # ({/5c3dc788-3182672a})

[comment]: # ({beca1bb5-cdf2da8b})
##### Exemplo 3

Carga média do processador do grupo de hosts 'MySQL Servers'.

```default
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
```

[comment]: # ({/beca1bb5-cdf2da8b})

[comment]: # ({c12aa12c-db9c8fce})
##### Exemplo 4

Média de 5 minutos do número de consultas por segundo para o grupo de hosts 'MySQL Servers'.

```default
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
```

[comment]: # ({/c12aa12c-db9c8fce})

[comment]: # ({c083097e-0233edd3})
##### Exemplo 5

Carga média da CPU em todos os hosts em vários grupos de hosts que possuem tags específicas.

```default
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
```

[comment]: # ({/c083097e-0233edd3})

[comment]: # ({0a45c034-30448f5d})
##### Exemplo 6

Cálculo usado nas somas dos valores mais recentes dos items de todo um grupo de hosts.

```default
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"])) 
```

[comment]: # ({/0a45c034-30448f5d})

[comment]: # ({dd370fd1-3e9404a6})
##### Exemplo 7

O número total de items sem suporte no grupo de hosts 'Zabbix servers'.

```default
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
```

##### Exemplo 8

Soma dos resultados numéricos mais recentes das verificações DNS em todos os hosts.
O item exibido no formulário é `net.dns[192.0.2.1,example.com,A]` como exemplo de uma possível chave.

```default
sum(last_foreach(/*/net.dns[*,*,*]))
```

Observe que os curingas devem corresponder ao número de parâmetros na chave (aqui [`net.dns`](/manual/config/items/itemtypes/zabbix_agent#net.dns) tem três parâmetros: ip, name, type).

[comment]: # ({/dd370fd1-3e9404a6})

[comment]: # ({f6401cd3-f094da29})
##### Exemplos de sintaxe correta/incorreta

Expressões (incluindo chamadas de funções) não podem ser usadas como parâmetros de histórico, tendência ou foreach das [funções](/manual/appendix/functions).
No entanto, essas funções podem ser usadas em outros parâmetros de função (não históricos).

|Expressão|Exemplo|
|-|---------|
|Válido|`avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100)`<br>`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álido|`sum(/host/key,10+2)`<br>`sum(/host/key, avg(10,2))`<br>`sum(/host/key,last(/host/key2))`|

Observe que, em uma expressão como:

```default
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 está sendo avaliada, um novo valor para o período solicitado pode chegar e, então, a outra parte da expressão terá um conjunto diferente de valores.

[comment]: # ({/f6401cd3-f094da29})
