1 Calculs agrégés
Vue d'ensemble
Les calculs agrégés sont un type d’élément calculé permettant de collecter des informations à partir de plusieurs éléments par le serveur Zabbix, puis de calculer une valeur agrégée, selon la fonction d’agrégation utilisée.
Les calculs agrégés ne nécessitent aucun agent en cours d’exécution sur l’hôte surveillé.
Syntaxe
Pour récupérer des agrégats, utilisez l’une des fonctions d’agrégation prises en charge : avg, max, min, sum, etc.
Ajoutez ensuite la fonction foreach comme seul paramètre ainsi que son filtre d’élément afin de sélectionner les éléments requis :
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
Une fonction foreach (par exemple avg_foreach, count_foreach, etc.) renvoie une valeur agrégée pour chaque élément sélectionné.
Les éléments sont sélectionnés à l’aide du filtre d’élément (/host/key?[group="host group"]), à partir de l’historique des éléments.
Pour plus de détails, voir les fonctions foreach.
Si certains éléments n’ont pas de données pour la période demandée, ils sont ignorés dans le calcul. Si aucun élément n’a de données, la fonction renverra une erreur.
Vous pouvez également lister plusieurs éléments comme paramètres de l’agrégation :
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
Notez que function doit ici être une fonction d’historique/tendance.
Si l’agrégat produit une valeur flottante, elle sera tronquée en entier si le type d’information de l’élément agrégé est Numérique (non signé).
Les macros utilisateur et les macros de découverte de bas niveau sont prises en charge dans :
- les paramètres de clé d’élément
- les paramètres de fonction
- les conditions de filtre (nom du groupe d’hôtes et nom du tag)
- les constantes d’expression
Un calcul d’agrégat peut devenir non pris en charge si :
- aucun des éléments référencés n’est trouvé (ce qui peut arriver si la clé d’élément est incorrecte, si aucun des éléments n’existe ou si tous les groupes inclus sont incorrects)
- aucune donnée n’est disponible pour calculer une fonction
Exemples d'utilisation
Exemples de clés pour les calculs agrégés.
Exemple 1
Espace disque total du groupe d’hôtes « MySQL Servers ».
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Exemple 2
Somme des dernières valeurs de tous les éléments correspondant à net.if.in[*] sur l’hôte.
sum(last_foreach(/host/net.if.in[*]))
Exemple 3
Charge processeur moyenne du groupe d’hôtes « MySQL Servers ».
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Exemple 4
Moyenne sur 5 minutes du nombre de requêtes par seconde pour le groupe d’hôtes « MySQL Servers ».
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Exemple 5
Charge CPU moyenne sur tous les hôtes de plusieurs groupes d’hôtes ayant les balises spécifiques.
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Exemple 6
Calcul utilisé sur les sommes des dernières valeurs d’élément d’un groupe d’hôtes entier.
sum(last_foreach(/*/net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(/*/nginx_stat.sh[active]?[group="video"]))
Exemple 7
Le nombre total d'éléments non pris en charge dans le groupe d'hôtes « Zabbix servers ».
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Exemple 8
Somme des derniers résultats numériques des vérifications DNS sur tous les hôtes.
La forme d'élément affichée est net.dns[192.0.2.0,example.com,A], à titre d'exemple d'une clé possible.
sum(last_foreach(/*/net.dns[*,*,*]))
Notez que les caractères génériques doivent correspondre au nombre de paramètres dans la clé (ici net.dns comporte trois paramètres : ip, name, type).
Exemples de syntaxe correcte/incorrecte
Les expressions (y compris les appels de fonction) ne peuvent pas être utilisées comme paramètres des fonctions d’historique, de tendance ou foreach. Cependant, ces fonctions elles-mêmes peuvent être utilisées dans d’autres paramètres de fonction (non historiques).
| Expression | Example |
|---|---|
| Valide | 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))) |
| Invalide | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
Notez que dans une expression telle que :
sum(sum_foreach(//resptime[*],5m))/sum(count_foreach(//resptime[*],5m))
il n’est pas possible de garantir que les deux parties de l’équation auront toujours le même ensemble de valeurs. Pendant l’évaluation d’une partie de l’expression, une nouvelle valeur pour la période demandée peut arriver, et l’autre partie de l’expression aura alors un ensemble de valeurs différent.