您可以使用子句和設定資源項目別名來增強超級度量。

Where 子句

Where 子句會驗證某個特定的度量值是否可用在超級度量中。您可以使用這個子句來指向同一物件的不同度量,如 where=(${metric=metric_group|my_metric} > 0)

例如:count(${objecttype = ExampleAdapter, adaptertype = ExampleObject, metric = ExampleGroup|Rating, depth=2, where =($value==1})

IsFresh 函數

使用 where 子句的 isFresh 函數,檢查度量最後一個數值是否全新。

對於在 VMware Aria Operations 中發佈的每個度量,具有最新發佈時間的點稱為該度量的最後一個點。該度量的最後一個點的值稱為該度量的最後一個值。當度量的最後一個點所經過的時間,小於該度量的估計發佈間隔時,度量的最後一個點會被視為全新。

如果度量的最後一個值為全新,則 isFresh 函數會傳回 true。例如,在下列案例中,函數:
  • ${this, metric=a|b, where=($value.isFresh())},如果最後一個值為全新,則傳回度量 a|b 的最後一個值。
  • ${this, metric=a|b, where=($value == 7 && $value.isFresh())};如果等於 7 而且是全新的 值,則傳回度量 a|b 的最後一個值。
  • ${this, metric=a|b, where=(${metric=c|d} == 7 && ${metric=c|d}.isFresh())},唯有度量 c|d 的最後一個值等於 7 且為全新時,才會傳回度量 a|b 的最後一個值。

設定資源項目別名

資源項目用於從 VMware Aria Operations 擷取計算超級指標的度量資料。資源項目是運算式的一部分,其開頭是 $,後接 {..} block。計算超級度量時,您可能必須使用相同的資源項目一次以上。如果需要變更計算,則必須變更每個資源項目,而這麼做可能會產生錯誤。因此,您可以使用設定資源項目別名功能,來重新撰寫運算式。

下例示範使用一個資源項目兩次的計算。

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

以下範例顯示如何使用設定資源項目別名功能來撰寫運算式。這兩個運算式的輸出結果都一樣。

(min(${adaptertype=VMWARE, objecttype=HostSystem, attribute= cpu|demand|active_longterm_load, depth=5, where=($value>=0)} as cpuload) + 0.0001)/(max(cpuload) + 0.0001)"
在使用設定資源項目別名時,請遵循下列準則:
  • 建立別名時,請確保在資源項目後面寫上 as,然後再寫上項目別名。例如:${…} as alias_name
  • 別名不能包含 ()[]+-*/%|&! =<>,.? :$ 等特殊字元,而且不能以數字開頭。
  • 別名名稱與超級度量運算式中的所有名稱一樣,均區分大小寫。
  • 您不一定要使用別名名稱。您可以定義別名,但不在運算式中使用。
  • 每個別名名稱只能使用一次。例如:${resource1,…} as r1 + ${resource2,…} as R1
  • 您可以對同一個資源項目指定多個別名。例如:${…} as a1 as a2

條件運算式 ?: 三元運算子

您可以在運算式中使用三元運算子來執行條件運算式。

例如:運算式條件 ? 若運算式條件成立 : 若運算式條件不成立

條件運算式的結果會轉換為數字。如果該值不是 0,則條件會假設為 True。

例如:-0.7 ? 10 : 20 等於 10。2 + 2 / 2 - 3 ? 4 + 5 / 6 : 7 + 8 等於 15 (7 + 8)。

它會根據條件執行若運算式條件成立若運算式條件不成立,但不會兩者都執行。如此一來,您就可以將運算式寫成以下所示的樣子:${this, metric=cpu|demandmhz} as a ! = 0 ? 1/a : -1。所有三元運算子運算式中都可以包含其他運算子,包括其他三元運算子。

例如:! 1 ? 2 ? 3 : 4 : 5 等於 5。