您可以使用子句和設定資源項目別名來增強超級度量。
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 函數,檢查度量最後一個數值是否全新。
對於在 vRealize Operations Manager 中發佈的每個度量,具有最新發佈時間的點稱為該度量的最後一個點。該度量的最後一個點的值稱為該度量的最後一個值。當度量的最後一個點所經過的時間,小於該度量的估計發佈間隔時,度量的最後一個點會被視為全新。
- ${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 的最後一個值。
設定資源項目別名
資源項目用於從 vRealize Operations Manager 擷取計算超級指標的度量資料。資源項目是運算式的一部分,其開頭是 $,後接 {..} 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。