Vous pouvez améliorer vos super mesures grâce à des conditions et des alias d'entrée de ressource.
Condition Where
La condition where vérifie si une valeur de mesure spécifique peut être utilisée dans la super mesure. Cette condition vous permet de pointer vers une mesure différente du même objet, comme dans where=(${metric=metric_group|my_metric} > 0).
Par exemple : count(${objecttype = ExampleAdapter, adaptertype = ExampleObject, metric = ExampleGroup|Rating, depth=2, where =($value==1})
Fonction IsFresh
Utilisez la fonction isFresh de la condition where afin de vérifier si la dernière valeur des mesures est bien actualisée.
Pour chaque mesure publiée dans VMware Aria Operations, le point indiquant la dernière heure de publication est considéré comme étant le dernier point de mesure. La valeur du dernier point de mesure est considérée comme la dernière valeur de cette mesure. Le dernier point d'une mesure est considéré comme actualisé lorsque le temps écoulé après le dernier point de la mesure est inférieur à l'intervalle de publication estimé de cette mesure.
- ${this, metric=a|b, where=($value.isFresh())} renvoie la dernière valeur de la mesure a|b si la dernière valeur est actualisée.
- ${this, metric=a|b, where=($value == 7 && $value.isFresh())}, renvoie la dernière valeur de la mesure a|b si elle est égale à sept et est actualisée.
- ${this, metric=a|b, where=(${metric=c|d} == 7 && ${metric=c|d}.isFresh())} renvoie la dernière valeur de la mesure a|b uniquement si la dernière valeur de la mesure c|d est égale à sept et est actualisée.
Création d'alias d'entrée de ressource
Les entrées de ressource permettent de récupérer des données de mesure depuis VMware Aria Operations pour le calcul de super-mesures. Une entrée de ressource est la partie d'une expression qui commence par $ suivi d'un bloc {..}. Lors du calcul d'une super mesure, vous pouvez être amené à utiliser la même entrée de ressource plusieurs fois. Si vous devez changer votre calcul, vous devez changer toutes les entrées de ressources, ce qui peut entraîner des erreurs. La création d'alias d'entrée de ressource permet de rédiger une expression différemment.
Dans l'exemple suivant, la même entrée de ressource est utilisée deux fois.
(min(${adaptertype=VMWARE, objecttype=HostSystem, attribute= cpu|demand|active_longterm_load, depth=5, where=($value>=0)}) + 0.0001)/(max(${adaptertype=VMWARE, objecttype=HostSystem, attribute=cpu|demand|active_longterm_load, depth=5, where=($value>=0)}) + 0.0001)"L'exemple ci-dessous montre comment écrire l'expression en créant un alias d'entrée de ressource. Les deux expressions ont le même résultat.
(min(${adaptertype=VMWARE, objecttype=HostSystem, attribute= cpu|demand|active_longterm_load, depth=5, where=($value>=0)} as cpuload) + 0.0001)/(max(cpuload) + 0.0001)"- Lorsque vous créez un alias, après l'entrée de ressource, vous devez écrire as, puis alias:name. Par exemple : ${…} as alias_name.
- L'alias ne peut contenir les caractères spéciaux ()[]+-*/%|&!=<>,.?:$ et ne peut pas commencer par un chiffre.
- Un nom d'alias, comme tous les noms dans les expressions de super mesure, n'est pas sensible à la casse.
- L'utilisation d'un nom d'alias est facultative. Vous pouvez définir un alias et ne pas l'utiliser dans une expression.
- Chaque nom d'alias peut être utilisé une seule fois. Par exemple : ${resource1,…} as r1 + ${resource2,…} as R1.
- Vous pouvez spécifier plusieurs alias pour une seule entrée de ressource. Par exemple : ${…} as a1 as a2.
Opérateurs ternaires ?: d'expression conditionnelle
Vous pouvez utiliser un opérateur ternaire dans une expression pour exécuter des expressions conditionnelles.
Par exemple : expression_condition ? expression_if_true : expression_if_false.
Le résultat de l'expression conditionnelle est converti en nombre. Si la valeur est différente de 0, la condition est considérée comme vraie.
Par exemple : le résultat de -0.7 ? 10 : 20 est égal à 10. Le résultat de 2 + 2 / 2 - 3 ? 4 + 5 / 6 : 7 + 8 est égal à 15 (7 + 8).
En fonction de la condition, l'expression expression_if_true ou expression_if_false est exécutée, mais jamais les deux. Vous pouvez ainsi écrire des expressions comme ${this, metric=cpu|demandmhz} as a != 0 ? 1/a : -1. Un opérateur ternaire peut comprendre d'autres opérateurs dans toutes ses expressions, notamment d'autres opérateurs ternaires.
Par exemple : le résultat de !1 ? 2 ? 3 : 4 : 5 est égal à 5.