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

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

[comment]: # ({b3f24d3f-f8e62abe})
#### Descripción general

Los cálculos agregados son un tipo de [métrica calculada](/manual/config/items/itemtypes/calculated)
que permite recopilar información de varias métricas por el servidor Zabbix y
luego calcular un agregado, dependiendo de la función agregada utilizada.

Solo se admiten valores flotantes y enteros sin signo (tipo de información) para las métricas
con cálculo agregado.

Los cálculos agregados no requieren que ningún agente se ejecute en el equipo que está
siendo monitoreado.

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

[comment]: # ({b0cecf7e-63d83a0c})
#### Sintaxis

Los agregados se pueden recuperar trabajando con:

- historial de artículos:

```{=html}
<!-- -->
```
    función_agregada(función(/host/elemento,parámetro),función(/host2/elemento2,parámetro),...)

- una [función foreach](/manual/apéndice/funciones/agregado/foreach)
    como único parámetro:

```{=html}
<!-- -->
```
    added_function(foreach_function(/*/key?[group="host group"],timeperiod))

dónde:

- La `función_agregada` es una de las [funciones agregadas] admitidas (/manual/appendix/functions/agregado#agregado-funciones-1): avg, max, min, sum, etc.
- `foreach_function` es una de las funciones foreach admitidas: avg_foreach, count_foreach, etc.

Las funciones de Foreach usan un [filtro de elementos](/manual/appendix/functions/aggregate/foreach#item-filter), para trabajar con el historial de
varios elementos y devolver una matriz de valores, uno para cada elemento.

::: notaclásica
Si el agregado da como resultado un valor flotante, se recortará
a un número entero si el tipo de información del elemento agregado es *Numérico
(no firmado)*.
:::

Un cálculo agregado puede dejar de ser compatible si:

- no se encuentra ninguno de los elementos a los que se hace referencia (lo que puede suceder si el elemento
    la clave es incorrecta, ninguno de los elementos existe o todos los grupos incluidos
    son incorrectos)
- no hay datos para calcular una función

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

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

Ejemplos de claves para cálculos agregados.

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

[comment]: # ({874bcf94-874bcf94})
##### Ejemplo 1

Espacio total en disco del grupo de host 'Servidores MySQL'.

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

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

[comment]: # ({3182672a-3182672a})
##### Ejemplo 2

Suma de los valores más recientes de todos los elementos que coinciden con net.if.in\[\*\] en el host.

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

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

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

Carga promedio del procesador del grupo de host 'Servidores MySQL'.

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

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

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

Promedio de 5 minutos del número de consultas por segundo para el grupo host
'Servidores MySQL'.

    avg(avg_foreach(/*/mysql.qps?[grupo="Servidores MySQL"],5m))

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

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

Carga promedio de CPU en todos los hosts en varios grupos de hosts que tienen la
etiquetas específicas.

    avg(last_foreach(/*/system.cpu.load?[(grupo="Servidores A" o grupo="Servidores B" o grupo="Servidores C") y (etiqueta="Servicio:" o etiqueta="Importancia: Alto")]))

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

[comment]: # ({30448f5d-30448f5d})
##### Ejemplo 6

Cálculo utilizado en las últimas sumas de valores de artículos de un grupo anfitrión completo.

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

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

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

El número total de elementos no admitidos en el grupo de host 'Servidores Zabbix'.

    sum(last_foreach(/*/zabbix[host,,items_unsupported]?[grupo="Servidores Zabbix"]))

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

[comment]: # ({50b7adbb-f094da29})

##### Examples of correct/incorrect syntax

Expressions (including function calls) cannot be used as history, trend, or foreach [function](/manual/appendix/functions) parameters. However, those functions themselves can be used in other (non-historical) function parameters.

|Expression|Example|
|-|---------|
|Valid|`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)))`|
|Invalid|`sum(/host/key,10+2)`<br>`sum(/host/key, avg(10,2))`<br>`sum(/host/key,last(/host/key2))`|

Note that in an expression like:

    sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))

it cannot be guaranteed that both parts of the equation will always have the same set of values. 
While one part of the expression is evaluated, a new value for the requested period may arrive and 
then the other part of the expression will have a different set of values.

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