7 Éléments calculés
Aperçu
Un élément calculé permet de créer un calcul basé sur les valeurs de certains éléments existants. Par exemple, vous pouvez vouloir calculer la moyenne horaire de la valeur d’un élément ou calculer la valeur totale pour un groupe d’éléments. C’est précisément à cela que sert un élément calculé.
Les calculs peuvent utiliser à la fois :
- des valeurs uniques d’éléments individuels
- un filtre complexe pour sélectionner plusieurs éléments à agréger (voir calculs agrégés pour plus de détails)
Les éléments calculés constituent un moyen de créer des sources de données virtuelles. Tous les calculs sont effectués uniquement par le serveur Zabbix. Les valeurs sont calculées périodiquement sur la base de l’expression arithmétique utilisée.
Les données résultantes sont stockées dans la base de données Zabbix comme pour tout autre élément ; les valeurs d’historique et de tendance sont toutes deux stockées et des graphiques peuvent être générés.
Si le résultat du calcul est une valeur flottante, il sera tronqué en entier si le type d’information de l’élément calculé est Numérique (non signé).
De plus, s’il n’y a pas de données récentes dans le cache et qu’aucune période d’interrogation n’est définie dans la fonction, Zabbix remontera par défaut jusqu’à une semaine dans le passé pour interroger la base de données à la recherche de valeurs historiques.
Les éléments calculés partagent leur syntaxe avec les expressions de déclencheur. Si vous connaissez les expressions de déclencheur, vous pouvez considérer les éléments calculés comme des fonctions analysant certaines valeurs, mais sans comparaison à un seuil.
La comparaison avec des chaînes est autorisée dans les éléments calculés. Les éléments calculés peuvent être référencés par des macros ou d’autres entités comme n’importe quel autre type d’élément.
Pour utiliser des éléments calculés, choisissez le type d’élément Calculated.
Champs configurables
La clé est un identifiant unique d’élément (par hôte). Vous pouvez créer n’importe quel nom de clé en utilisant les symboles pris en charge.
La définition du calcul doit être saisie dans le champ Formule. Il n’y a aucun lien entre la formule et la clé. Les paramètres de la clé ne sont en aucun cas utilisés dans la formule.
La syntaxe d’une formule simple est la suivante :
function(/host/key,<parameter1>,<parameter2>,...)
où :
| Élément | Description |
|---|---|
function |
L’une des fonctions prises en charge : last, min, max, avg, count, etc. |
host |
Hôte de l’élément utilisé pour le calcul. L’hôte actuel peut être omis (c’est-à-dire comme dans function(//key,parameter,...)). |
key |
Clé de l’élément utilisé pour le calcul. Les éléments renvoyant des valeurs avec le type de données binaire ou JSON ne sont pas pris en charge. |
parameter(s) |
Paramètres de la fonction, si nécessaire. Les suffixes de temps et les suffixes de taille mémoire sont pris en charge. |
Les macros utilisateur dans la formule seront développées si elles sont utilisées pour référencer un paramètre de fonction, un paramètre de filtre d’élément ou une constante. Les macros utilisateur ne seront PAS développées si elles référencent une fonction, un nom d’hôte, une clé d’élément, un paramètre de clé d’élément ou un opérateur.
Une formule plus complexe peut utiliser une combinaison de fonctions, d’opérateurs et de parenthèses. Vous pouvez utiliser toutes les fonctions et tous les opérateurs pris en charge dans les expressions de déclencheur. La logique et la priorité des opérateurs sont exactement les mêmes.
Contrairement aux expressions de déclencheur, Zabbix traite les éléments calculés selon l’intervalle de mise à jour de l’élément, et non lors de la réception d’une nouvelle valeur.
Tous les éléments référencés par des fonctions d’historique dans la formule de l’élément calculé doivent exister et collecter des données. De plus, si vous modifiez la clé d’élément d’un élément référencé, vous devez mettre à jour manuellement toutes les formules utilisant cette clé.
Un élément calculé peut devenir non pris en charge dans plusieurs cas :
- élément(s) référencé(s)
- introuvable(s)
- désactivé(s)
- appartenant à un hôte désactivé
- non pris en charge (sauf avec la fonction nodata() et les opérateurs avec des valeurs inconnues)
- aucune donnée pour calculer une fonction
- division par zéro
- syntaxe incorrecte utilisée
Exemples d'utilisation
Exemple 1
Calcul du pourcentage d'espace disque libre sur '/'.
Utilisation de la fonction last:
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
Zabbix prendra les dernières valeurs pour les espaces disque libres et totaux et calculera le pourcentage selon la formule donnée.
Exemple 2
Calcul d'une moyenne sur 10 minutes du nombre de valeurs traitées par Zabbix.
Utilisation de la fonction avg:
avg(/Zabbix Server/zabbix[wcache,values],10m)
Notez qu'une utilisation intensive d'éléments calculés avec de longues périodes peut affecter les performances du serveur Zabbix.
Exemple 3
Calcul de la bande passante totale sur eth0.
Somme de deux fonctions :
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Exemple 4
Calcul du pourcentage du trafic entrant.
Expression plus complexe :
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
Voir également : Exemples de calculs agrégés