[comment]: # attributes: notoc

[comment]: # ({ac717204-ee60e21e})
# 1 Fonctions d'agrégation

Sauf indication contraire, toutes les fonctions répertoriées ici sont prises en charge dans :

-   [Expressions de déclencheur](/manual/config/triggers/expression)
-   [Éléments calculés](/manual/config/items/itemtypes/calculated)
-   [Macros d'expression](/manual/config/macros/expression_macros)

Les fonctions d'agrégation peuvent fonctionner avec :

-   l'historique des éléments, par exemple, `min(/host/key,1h)`
-   [les fonctions foreach](/manual/appendix/functions/aggregate/foreach) comme
    seul paramètre, par exemple, `min(last_foreach(/*/key))` (uniquement dans les éléments calculés ; ne peut pas être utilisé dans les déclencheurs)

Les fonctions sont listées sans informations supplémentaires. Cliquez sur la fonction pour voir les détails complets.

|Function|Description|
|--|--------|
|[avg](#avg)|La valeur moyenne d'un élément sur la période d'évaluation définie.|
|[bucket_percentile](#bucket-percentile)|Calcule le percentile à partir des buckets d'un histogramme.|
|[count](#count)|Le nombre de valeurs dans un tableau renvoyé par une fonction foreach.|
|[histogram_quantile](#histogram-quantile)|Calcule le φ-quantile à partir des buckets d'un histogramme.|
|[item_count](#item-count)|Le nombre d'éléments existants dans la configuration qui correspondent aux critères de filtre.|
|[kurtosis](#kurtosis)|L'"aplatissement" de la distribution de probabilité dans les valeurs collectées sur la période d'évaluation définie.|
|[mad](#mad)|L'écart absolu médian dans les valeurs collectées sur la période d'évaluation définie.|
|[max](#max)|La valeur la plus élevée d'un élément sur la période d'évaluation définie.|
|[min](#min)|La valeur la plus basse d'un élément sur la période d'évaluation définie.|
|[skewness](#skewness)|L'asymétrie de la distribution de probabilité dans les valeurs collectées sur la période d'évaluation définie.|
|[stddevpop](#stddevpop)|L'écart type de la population dans les valeurs collectées sur la période d'évaluation définie.|
|[stddevsamp](#stddevsamp)|L'écart type de l'échantillon dans les valeurs collectées sur la période d'évaluation définie.|
|[sum](#sum)|La somme des valeurs collectées sur la période d'évaluation définie.|
|[sumofsquares](#sumofsquares)|La somme des carrés dans les valeurs collectées sur la période d'évaluation définie.|
|[varpop](#varpop)|La variance de la population des valeurs collectées sur la période d'évaluation définie.|
|[varsamp](#varsamp)|La variance de l'échantillon des valeurs collectées sur la période d'évaluation définie.|

[comment]: # ({/ac717204-ee60e21e})

[comment]: # ({2acead3e-4d343eb8})
#### Paramètres communs

-   `/host/key` est un premier paramètre obligatoire commun pour les fonctions
    faisant référence à l'historique de l'élément de l'hôte
-   `(sec|#num)<:time shift>` est un deuxième paramètre commun pour les
    fonctions faisant référence à l'historique de l'élément de l'hôte, où :
    -   **sec** - période [d'évaluation](/manual/config/triggers#evaluation-period) maximale en secondes
        (des [suffixes](/manual/appendix/suffixes) de temps peuvent être utilisés), ou
    -   **\#num** - [plage d'évaluation](/manual/config/triggers#evaluation-period) maximale dans les dernières
        valeurs collectées (si précédé d'un dièse)
    -   **time shift** (facultatif) permet de déplacer le point d'évaluation
        dans le passé. Voir [plus de
        détails](/manual/config/triggers/expression#time-shift) sur la spécification du décalage temporel.

[comment]: # ({/2acead3e-4d343eb8})

[comment]: # ({c645f0e4-fe53c04c})
### Détails des fonctions

Quelques remarques générales sur les paramètres des fonctions :

-   Les paramètres des fonctions sont séparés par une virgule
-   Les paramètres de fonction facultatifs (ou parties de paramètres) sont indiqués par
    `<` `>`
-   Les paramètres spécifiques à chaque fonction sont décrits avec chaque fonction
-   Les paramètres `/host/key` et `(sec|#num)<:time shift>` ne doivent jamais être
    entre guillemets

[comment]: # ({/c645f0e4-fe53c04c})

[comment]: # ({85535fd1-f5993b4c})
##### avg(/host/key,(sec|#num)<:décalage temporel>) {#avg}

La valeur moyenne d'un élément pendant la période d'évaluation définie.<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonctions foreach](/manual/appendix/functions/aggregate/foreach) prises en charge: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Paramètres: voir les [paramètres communs](#common-parameters).

Le décalage temporel est utile lorsqu'il est nécessaire de comparer la valeur moyenne actuelle avec la valeur moyenne d'il y a quelque temps.

Exemples:

```default
avg(/host/key,1h) #calcule la valeur moyenne pour la dernière heure jusqu'à maintenant
avg(/host/key,#5) #calcule la valeur moyenne des cinq dernières valeurs
avg(/host/key,1h:now-1d) #calcule la valeur moyenne sur une heure, de 25 heures à 24 heures avant maintenant
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calcule la charge processeur moyenne pour tous les serveurs MySQL
avg(/host/proc.num,5m)>300 #déclencheur si le nombre moyen de processus au cours des 5 dernières minutes a dépassé 300
```

[comment]: # ({/85535fd1-f5993b4c})

[comment]: # ({9237fab4-af24d13f})
##### bucket_percentile(item filter,time period,percentage) {#bucket-percentile}

Calcule le percentile à partir des buckets d'un histogramme.<br>

Paramètres :

-   **item filter** - voir [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) ;
-   **time period** - voir [time period](/manual/appendix/functions/aggregate/foreach#time-period) ;
-   **percentage** - pourcentage (0-100).

Commentaires :

-   Pris en charge uniquement dans les éléments calculés ;
-   Cette fonction est un alias de `histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1))`.

Exemples :

```default
bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #calcule le temps de réponse au 95e percentile sur 5 minutes
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #calcule la latence API au 99e percentile
```

[comment]: # ({/9237fab4-af24d13f})

[comment]: # ({6e12bb62-3c498650})
##### count(func_foreach(item filter,<time period>),<operator>,<pattern>) {#count}

Le nombre de valeurs dans un tableau renvoyé par une fonction foreach.<br>
Fonctions [foreach](/manual/appendix/functions/aggregate/foreach) prises en charge : *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Paramètres : 

-   **func_foreach** - fonction foreach pour laquelle le nombre de valeurs renvoyées doit être compté. Voir [fonctions foreach](/manual/appendix/functions/aggregate/foreach) pour plus de détails. Notez que count_foreach et bucket_rate_foreach prennent en charge des [paramètres supplémentaires](/manual/appendix/functions/aggregate/foreach#additional-parameters).
-   **item filter** - voir [syntaxe du filtre d'élément](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - voir [période de temps](/manual/appendix/functions/aggregate/foreach#time-period);<br>
-   **operator** (doit être entre guillemets doubles). `operators` pris en charge :<br>*eq* - égal<br>*ne* - différent<br>*gt* - supérieur<br>*ge* - supérieur ou égal<br>*lt* - inférieur<br>*le* - inférieur ou égal<br>*like* - correspond si le motif est contenu (sensible à la casse)<br>*bitand* - ET bit à bit<br>*regexp* - correspondance sensible à la casse de l'expression régulière donnée dans `pattern`<br>*iregexp* - correspondance insensible à la casse de l'expression régulière donnée dans `pattern`<br>
-   **pattern** - le motif requis (les arguments de type chaîne doivent être entre guillemets doubles) ; pris en charge si *operator* est spécifié dans le troisième paramètre.

Commentaires : 

-   L'utilisation de **count()** avec une fonction foreach liée à l'historique (max_foreach, avg_foreach, etc.) peut avoir des implications sur les performances, tandis que l'utilisation de **exists_foreach()**, qui fonctionne uniquement avec les données de configuration, n'aura pas cet effet.
-   Les paramètres facultatifs *operator* ou *pattern* ne peuvent pas être laissés vides après une virgule ; ils doivent être entièrement omis.
-   Avec *bitand* comme troisième paramètre, le quatrième paramètre `pattern` peut être spécifié sous la forme de deux nombres séparés par '/' : **number_to_compare_with/mask**. count() calcule le "ET bit à bit" entre la valeur et le *mask* et compare le résultat à *number_to_compare_with*. Si le résultat du "ET bit à bit" est égal à *number_to_compare_with*, la valeur est comptée.<br>Si *number_to_compare_with* et *mask* sont égaux, seul le *mask* doit être spécifié (sans '/').
-   Avec *regexp* ou *iregexp* comme troisième paramètre, le quatrième paramètre `pattern` peut être une expression régulière ordinaire ou [globale](/manual/regular_expressions#global-regular-expressions) (commençant par '@'). Dans le cas des expressions régulières globales, la sensibilité à la casse est héritée des paramètres de l'expression régulière globale. Pour la correspondance regexp, les valeurs flottantes seront toujours représentées avec 4 chiffres après la virgule. Notez également que pour les grands nombres, la différence entre la représentation décimale (stockée dans la base de données) et binaire (utilisée par le serveur Zabbix) peut affecter le 4e chiffre après la virgule.

Exemples :

```default
count(max_foreach(/*/net.if.in[*],1h)) #calculer le nombre d'éléments net.if.in ayant reçu des données au cours de la dernière heure jusqu'à maintenant
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculer le nombre de systèmes de fichiers dont plus de 95 % de l'espace disque est utilisé
```

[comment]: # ({/6e12bb62-3c498650})

[comment]: # ({f07c0983-f3ad7158})
##### histogram_quantile(quantile,bucket1,value1,bucket2,value2,...) {#histogram-quantile}

Calcule le φ-quantile à partir des buckets d'un histogramme.<br>
Fonction [foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *bucket_rate_foreach*.

Paramètres:

-   **quantile** - 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** - paires saisies manuellement (>=2) de paramètres ou la réponse de [bucket_rate_foreach](/manual/appendix/functions/aggregate/foreach).

Commentaires:

-   Pris en charge uniquement dans les éléments calculés;
-   Correspond fonctionnellement à '[histogram\_quantile](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram-quantile)' de PromQL;
-   Renvoie -1 si les valeurs du dernier bucket 'Infinity' (*"+inf"*) sont égales à 0.

Exemples:

```default
histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
```

[comment]: # ({/f07c0983-f3ad7158})

[comment]: # ({90ddddd2-c8e3133a})
##### item_count(item filter) {#item-count}

Le nombre d'éléments existants dans la configuration qui correspondent aux critères du filtre.<br>
Type de valeur pris en charge: *Integer*.

Paramètre: 

-   **item filter** - critères de sélection des éléments, permettant une référence par groupe d'hôtes, hôte, clé d'élément et tags. Les caractères génériques sont pris en charge. Voir [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) pour plus de détails.<br>

Commentaires:

-   Pris en charge uniquement dans les éléments calculés;
-   Fonctionne comme un alias de la fonction *count(exists_foreach(item_filter))*.

Exemples:

```default
item_count(/*/agent.ping?[group="Host group 1"]) #calculate the number of hosts with the agent.ping item in "Host group 1"
```

[comment]: # ({/90ddddd2-c8e3133a})

[comment]: # ({ad613717-88a54099})
##### kurtosis(/host/key,(sec|#num)<:time shift>) {#kurtosis}

L'aplatissement de la distribution de probabilité des valeurs collectées pendant la période d'évaluation définie. Voir aussi: [Kurtosis](https://en.wikipedia.org/wiki/Kurtosis).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
kurtosis(/host/system.cpu.util[,user],5m)>5 #déclencheur sur des pics brusques de l'utilisation du CPU sur 5 minutes
```

[comment]: # ({/ad613717-88a54099})

[comment]: # ({1b18c768-bfb43a27})
##### mad(/host/key,(sec|#num)<:time shift>) {#mad}

L'écart absolu médian des valeurs collectées pendant la période d'évaluation définie. Voir aussi: [Écart absolu médian](https://en.wikipedia.org/wiki/Median_absolute_deviation).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #déclencheur si la dernière valeur d'utilisation du CPU est statistiquement significative
```

[comment]: # ({/1b18c768-bfb43a27})

[comment]: # ({9ac9dd89-5882010b})
##### max(/host/key,(sec|#num)<:time shift>) {#max}

La valeur la plus élevée d'un élément pendant la période d'évaluation définie.<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonctions foreach](/manual/appendix/functions/aggregate/foreach) prises en charge: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
max(/host/key,1h) - min(/host/key,1h) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #return the highest disk usage across all Linux servers
```

[comment]: # ({/9ac9dd89-5882010b})

[comment]: # ({471d86a5-ffd1e499})
##### min(/host/key,(sec|#num)<:time shift>) {#min}

La valeur la plus basse d'un élément pendant la période d'évaluation définie.<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonctions foreach](/manual/appendix/functions/aggregate/foreach) prises en charge: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
max(/host/key,1h) - min(/host/key,1h) #calculer la différence entre les valeurs maximale et minimale au cours de la dernière heure jusqu'à maintenant (l'écart des valeurs)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #renvoyer l'état opérationnel minimal pour n'importe quelle interface sur tous les serveurs Linux
```

[comment]: # ({/471d86a5-ffd1e499})

[comment]: # ({8d966168-6b6fb273})
##### skewness(/host/key,(sec|#num)<:time shift>) {#skewness}

L'asymétrie de la distribution de probabilité des valeurs collectées pendant la période d'évaluation définie. Voir aussi: [Skewness](https://en.wikipedia.org/wiki/Skewness).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
```

[comment]: # ({/8d966168-6b6fb273})

[comment]: # ({0b3aca57-11c2ea25})
##### stddevpop(/host/key,(sec|#num)<:décalage temporel>) {#stddevpop}

L'écart type de population des valeurs collectées dans la période d'évaluation définie. Voir aussi: [Écart type](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
stddevpop(/host/system.cpu.util[,user],10m)>7 #déclencheur si l'utilisation du CPU fluctue fortement (l'écart type de population est supérieur à 7 sur 10 minutes)
```

[comment]: # ({/0b3aca57-11c2ea25})

[comment]: # ({f7108164-1db77c44})
##### stddevsamp(/hôte/key,(sec|#num)<:time shift>) {#stddevsamp}

L'écart type d'échantillon des valeurs collectées dans la période d'évaluation définie. Voir aussi: [Écart type](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Au moins deux valeurs de données sont requises pour que cette fonction fonctionne.

Exemples:

```default
stddevsamp(/hôte/system.cpu.util[,user],10m)>7 #déclencheur si l'utilisation du CPU fluctue fortement (l'écart type d'échantillon est supérieur à 7 sur 10 minutes)
```

[comment]: # ({/f7108164-1db77c44})

[comment]: # ({740c263a-0ecf79eb})
##### sum(/host/key,(sec|#num)<:time shift>) {#sum}

La somme des valeurs collectées pendant la période d'évaluation définie.<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[Fonctions foreach](/manual/appendix/functions/aggregate/foreach) prises en charge: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #calculate the total incoming network traffic for all Linux servers
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #calculate the total disk space for all MySQL servers
sum(last_foreach(/*/net.dns[*,*,*])) #calculate the total number of successful DNS checks
```

[comment]: # ({/740c263a-0ecf79eb})

[comment]: # ({57e39842-6f6556f2})
##### sumofsquares(/host/key,(sec|#num)<:décalage temporel>) {#sumofsquares}

La somme des carrés des valeurs collectées dans la période d'évaluation définie.<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
sumofsquares(/host/calculated.net.if.rate,1m) #la somme des carrés du taux de trafic réseau (entrant vs sortant)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #la somme des carrés des dernières valeurs de trafic réseau entrant sur tous les hôtes Linux
```

[comment]: # ({/57e39842-6f6556f2})

[comment]: # ({a61bfa35-d299bd33})
##### varpop(/hôte/key,(sec|#num)<:time shift>) {#varpop}

La variance de population des valeurs collectées au cours de la période d'évaluation définie. Voir aussi: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Exemples:

```default
varpop(/hôte/system.cpu.util[,user],10m)>50 #déclencheur si l'utilisation du CPU fluctue fortement (la variance est supérieure à 50 sur 10 minutes)
```

[comment]: # ({/a61bfa35-d299bd33})

[comment]: # ({146891fb-b1bc041c})
##### varsamp(/hôte/key,(sec|#num)<:time shift>) {#varsamp}

La variance d'échantillon des valeurs collectées dans la période d'évaluation définie. Voir aussi: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Types de valeurs pris en charge: *Float*, *Integer*.<br>
[fonction foreach](/manual/appendix/functions/aggregate/foreach) prise en charge: *last_foreach*.

Paramètres: voir [paramètres communs](#common-parameters).

Au moins deux valeurs de données sont requises pour que cette fonction fonctionne.

Exemples:

```default
varsamp(/hôte/system.cpu.util[,user],10m)>50 #déclencheur si l'utilisation du CPU fluctue fortement (la variance d'échantillon est supérieure à 50 sur 10 minutes)
```

[comment]: # ({/146891fb-b1bc041c})

[comment]: # ({ba59dd3a-541616fc})
Voir [toutes les fonctions prises en charge](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-541616fc})

