Você pode aprimorar suas supermétricas usando cláusulas e alias de entrada de recurso.

Cláusula Where

A cláusula where verifica se um determinado valor de métrica pode ser usado na supermétrica. Use essa cláusula para apontar para uma métrica diferente do mesmo objeto, como where=(${metric=metric_group|my_metric} > 0).

Por exemplo: count(${objecttype = ExampleAdapter, adaptertype = ExampleObject, metric = ExampleGroup|Rating, depth=2, where =($value==)

Função IsFresh

Use a função isFresh na cláusula where para verificar se o último valor das métricas é atualizado ou não.

Para cada métrica publicada em VMware Aria Operations, o ponto com o horário de publicação mais recente é chamado de último ponto dessa métrica. O valor do último ponto dessa métrica é chamado de último valor dessa métrica. O último ponto de uma métrica é considerado atualizado quando o tempo decorrido após o último ponto da métrica é menor que o intervalo de publicação estimado dessa métrica.

A função isFresh retornará true se o último valor das métricas for atualizado. Por exemplo, nos seguintes cenários, a função:
  • ${this, metric=a|b, where=($value.isFresh())}, retornará o último valor da métrica a|b se o último valor for atualizado.
  • ${this, metric=a|b, where=($value == 7 && $value.isFresh())}, retorna o último valor da métrica a|b se for igual a sete e é fresco.
  • ${this, metric=a|b, where=(${metric=c|d} == 7 && ${metric=c|d}.isFresh())}, retorna o último valor da métrica a|b somente se o último valor da métrica c|d for igual a sete e for recente.

Alias de entrada de recurso

As entradas de recursos são usadas para recuperar dados de métrica de VMware Aria Operations para calcular supermétricas. Uma entrada de recurso é a parte de uma expressão que começa com $ seguida por um {..} bloco. Ao calcular uma supermétrica, talvez você precise usar a mesma entrada de recurso várias vezes. Se você precisar alterar o cálculo, deverá alterar todas as entradas de recursos, o que pode levar a erros. Você pode usar o alias de entrada de recurso para reescrever a expressão.

O exemplo a seguir mostra uma entrada de recurso que foi usada duas vezes.

(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)"

O exemplo a seguir mostra como escrever a expressão usando o alias de entrada de recurso. A saída de ambas as expressões é a mesma.

(min(${adaptertype=VMWARE, objecttype=HostSystem, attribute= cpu|demand|active_longterm_load, depth=5, where=($value>=0)} as cpuload) + 0.0001)/(max(cpuload) + 0,0001)"
Siga estas diretrizes ao usar o alias de entrada de recurso:
  • Ao criar um alias, certifique-se de que, após a entrada do recurso, você escreva como e, em seguida, alias:name. Por exemplo: ${…} as alias_name.
  • O alias não pode conter o ()[]+-*/%|&!=<>,.?:$ caracteres especiais e não podem começar com um dígito.
  • Um nome de alias, como todos os nomes em expressões supermétricas, não diferencia maiúsculas de minúsculas.
  • O uso de um nome de alias é opcional. Você pode definir o alias e não usá-lo em uma expressão.
  • Cada nome de alias pode ser usado apenas uma vez. Por exemplo: ${resource1,…} como r1 + ${resource2,…} como R1.
  • Você pode especificar vários aliases para a mesma entrada de recurso. Por exemplo: ${…} como a1 como a2 (${…} as a1 as a2).

Expressão Condicional ?: Operadores Ternários

Você pode usar um operador ternário em uma expressão para executar expressões condicionais.

Por exemplo: expression_condition ? expression_if_true : expression_if_false.

O resultado da expressão condicional é convertido em um número. Se o valor não for 0, a condição será assumida como verdadeira.

Por exemplo: -0.7 ? 10 : 20 é igual a 10. 2 + 2 / 2 - 3 ? 4 + 5 / 6 : 7 + 8 é igual a 15 (7 + 8).

Dependendo da condição, expression_if_true ou expression_if_false é executado, mas não os dois. Dessa forma, você pode escrever expressões como ${this, metric=cpu|demandmhz} como um != 0? 1/a : -1. Um operador ternário pode conter outros operadores em todas as suas expressões, incluindo outros operadores ternários.

Por exemplo: !1? 2? 3 : 4 : 5 é igual a 5.