Puede mejorar las supermétricas mediante el uso de alias de entrada de recursos y cláusulas.
La cláusula Where
La cláusula where comprueba si se puede utilizar un valor de métrica determinado en la supermétrica. Utilice esta cláusula para señalar otra métrica del mismo objeto como, por ejemplo, where=(${metric=metric_group|my_metric} > 0).
Por ejemplo, count(${objecttype = ExampleAdapter, adaptertype = ExampleObject, metric = ExampleGroup|Rating, depth=2, where =($value==1})
Función IsFresh
Utilice la función isFresh en la cláusula where para comprobar si el último valor de las métricas es o no nuevo.
Para cada métrica publicada en vRealize Operations Manager, se llamará al punto con la última hora de publicación como el último punto de esa métrica. El valor de ese último punto de la métrica se denomina último valor de esa métrica. El último punto de una métrica se considera nuevo cuando el tiempo transcurrido después del último punto de la métrica es inferior al intervalo de publicación estimado de dicha métrica.
- ${this, metric=a|b, where=($value.isFresh())}, devuelve el último valor de la métrica a|b si el último valor es fresh.
- ${this, metric=a|b, where=($value == 7 && $value.isFresh())}, devuelve el último valor de la métrica a|b si es igual a siete y es fresh.
- ${this, metric=a|b, where=(${metric=c|d} == 7 && ${metric=c|d}.isFresh())}, devuelve el último valor de la métrica a|b solo si el último valor de la métrica c|d es igual a siete y es fresh.
Alias de entrada de recursos
Las entradas de recursos se utilizan para recuperar datos de métricas de vRealize Operations Manager para el cálculo de supermétricas. Una entrada de recurso es la parte de una expresión que comienza por $ seguida de un bloque {..}. Al calcular una supermétrica, es posible que tenga que utilizar la misma entrada de recurso varias veces. Si tiene que cambiar los cálculos, debe cambiar cada entrada de recurso, lo que podría conducir a errores. Puede usar los alias de entrada de recurso para reescribir la expresión.
El ejemplo siguiente muestra una entrada de recurso que se ha utilizado dos veces.
(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)"En el ejemplo siguiente se muestra cómo escribir la expresión mediante alias de entrada de recurso. El resultado de ambas expresiones es el mismo.
(min(${adaptertype=VMWARE, objecttype=HostSystem, attribute= cpu|demand|active_longterm_load, depth=5, where=($value>=0)} as cpuload) + 0.0001)/(max(cpuload) + 0.0001)"- Cuando cree un alias, debe escribir as después de la entrada de recurso y, a continuación, alias:name. Por ejemplo: ${…} as alias_name.
- El alias no puede contener los caracteres especiales ()[]+-*/%|&!=<>,.?:$ y no puede comenzar por un dígito.
- Un nombre de alias, como todos los nombres de las expresiones de supermétrica, distingue entre mayúsculas y minúsculas.
- El uso de un nombre de alias es opcional. Puede definir el alias y no utilizarlo en una expresión.
- Cada nombre de alias solo puede utilizarse una vez. Por ejemplo: ${resource1,…} as r1 + ${resource2,…} as R1.
- Puede especificar varios alias para la misma entrada de recurso. Por ejemplo: ${…} as a1 as a2.
Operadores ternarios de expresión condicional ?:
Puede utilizar un operador ternario en una expresión para ejecutar expresiones condicionales.
Por ejemplo: expression_condition ? expression_if_true : expression_if_false.
El resultado de la expresión condicional se convierte en un número. Si el valor no es 0, entonces se asume que la condición es verdadera.
Por ejemplo: -0,7 ? 10 : 20 es igual a 10. 2 + 2 / 2 - 3 ? 4 + 5 / 6 : 7 + 8 es igual a 15 (7 + 8).
En función de la condición, se ejecuta expression_if_true o expression_if_false, pero no ambas. De este modo, puede escribir expresiones como, por ejemplo, ${this, metric=cpu|demandmhz} as a != 0 ? 1/a : -1. Un operador ternario puede contener otros operadores en todas sus expresiones, incluidos otros operadores ternarios.
Por ejemplo: !1 ? 2 ? 3 : 4 : 5 es igual a 5.