[comment]: # attributes: notoc

[comment]: # ({9ab02dbe-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)`
-   [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é directement dans les déclencheurs)

Les fonctions sont listées sans information supplémentaire. 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é des valeurs collectées sur la période d'évaluation définie.|
|[mad](#mad)|L'écart absolu médian des 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 faible d'un élément sur la période d'évaluation définie.|
|[skewness](#skewness)|L'asymétrie de la distribution de probabilité des valeurs collectées sur la période d'évaluation définie.|
|[stddevpop](#stddevpop)|L'écart type de la population des valeurs collectées sur la période d'évaluation définie.|
|[stddevsamp](#stddevsamp)|L'écart type de l'échantillon des 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 des 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]: # ({/9ab02dbe-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]: # ({934606ff-f5993b4c})
##### avg(/host/key,(sec|#num)<:time shift>) {#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 [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) #la valeur moyenne pour la dernière heure jusqu'à maintenant
avg(/host/key,1h:now-1d) #la valeur moyenne pour une heure allant de 25 heures à 24 heures avant maintenant
avg(/host/key,#5) #la valeur moyenne des cinq dernières valeurs
avg(/host/key,#5:now-1d) #la valeur moyenne des cinq dernières valeurs, à l'exclusion des valeurs reçues au cours des dernières 24 heures
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]: # ({/934606ff-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);<br>
-   **time period** - voir [time period](/manual/appendix/functions/aggregate/foreach#time-period);<br>
-   **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 [foreach functions](/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 [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - voir [time period](/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 avec l'expression régulière donnée dans `pattern`<br>*iregexp* - correspondance insensible à la casse avec 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 avec plus de 95 % d'espace disque 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 function](/manual/appendix/functions/aggregate/foreach) prise en charge: *bucket_rate_foreach*.

Paramètres:

-   **quantile** - 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** - paires de paramètres saisies manuellement (>=2) ou 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]: # ({53675d63-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"]) #le nombre d'hôtes avec l'élément *agent.ping* dans "Host group 1"
```

[comment]: # ({/53675d63-c8e3133a})

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

L'« aplatissement » de la distribution de probabilité dans les 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) #calculer la différence entre les valeurs maximale et minimale au cours de la dernière heure jusqu'à maintenant (l'écart des valeurs)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #renvoie la plus grande utilisation du disque parmi tous les hôtes Linux
```

[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})
##### asymétrie(/host/key,(sec|#num)<:time shift>) {#skewness}

L'asymétrie de la distribution de probabilité dans les valeurs collectées au cours de 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]: # ({0dc60fe3-11c2ea25})
##### stddevpop(/hôte/key,(sec|#num)<:time shift>) {#stddevpop}

L'écart type de population des valeurs collectées sur 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(/hôte/system.cpu.util[,user],10m)>7 #L'utilisation du CPU fluctue fortement (l'écart type de population est supérieur à 7)
```

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

[comment]: # ({d870ca1f-1db77c44})
##### stddevsamp(/host/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(/host/system.cpu.util[,user],10m)>7 #L'utilisation du CPU fluctue fortement (l'écart type d'échantillon est supérieur à 7)
```

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

[comment]: # ({80517512-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"])) #la somme des dernières valeurs du trafic réseau entrant pour tous les serveurs Linux
```

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

[comment]: # ({57e39842-6f6556f2})
##### sumofsquares(/hôte/key,(sec|#num)<:time shift>) {#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>
[foreach function](/manual/appendix/functions/aggregate/foreach) pris en charge: *last_foreach*.

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

Exemples:

```default
sumofsquares(/hôte/calculated.net.if.rate,1m) #la somme des carrés pour le 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]: # ({fdc1bbcc-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 #L'utilisation du CPU fluctue fortement (la variance est supérieure à 50)
```

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

[comment]: # ({e6d26f08-b1bc041c})
##### varsamp(/host/key,(sec|#num)<:time shift>) {#varsamp}

La variance d'échantillon 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).

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

Exemples:

```default
varsamp(/host/system.cpu.util[,user],10m)>50 #L'utilisation du CPU fluctue fortement (la variance d'échantillon est supérieure à 50)
```

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

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

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

