建立與管理變數
在 IBM® Cloud Logs 中,變數是在查詢中使用的值的占位符。 在自訂儀表板中使用時,儀表板的查詢會更新以顯示該值的資料。
變數讓儀表板更具互動性和動態。 您可以使用變數來取代在查詢中加入伺服器、應用程式或感測器的特定名稱。 您可以輕鬆切換不同的資料檢視。 這表示如果您有複雜的高心數指標,您可以新增變數來放大您關心的特定值。 不論變數來源類型為何,所有資料類型的變數都可以跨 widget 使用。
變數類型
您可以選擇不同的變數類型。
- 靜態值變數
- 您可以手動定義變量值的固定清單,例如以逗號分隔的數字或數字字串。 例如,如果您的國家名稱永遠不會變,您可能會希望將其建立為靜態值變 數,而不是資料來源查詢變數。
- 查詢變數
- 變量值可從日誌或度量衡資料來源查詢擷取。 例如,查詢變數可以產生伺服器名稱、感測器 ID 或資料中心的清單,透過使用資料來源查詢取得選項,動態更新數值。 查詢變數在管理多個資料來源實體時非常有用,尤其是跨越不同的環境。
為自訂儀表板定義變數
-
按一下儀表板圖示
> Custom dashboards。
-
在新的或現有的儀表板中,按一下管理變數圖示。{ }.
-
按一下 + 變數。
-
對於所有變數類型,設定下列欄位:
-
變數名稱。 在此欄位中輸入的文字決定變數名稱在查詢中的顯示方式,例如
{{ podvalues }}。 變數名稱中不允許使用大寫字母或空格。 -
顯示名稱(可選)。 在此欄位中輸入的文字會出現在選擇中,成為下拉清單的一部分,例如「我的 Pods」。
-
選擇選項。
- 多值
- 多值指定使用者可以在特定變數中選擇多個值。 某些查詢不支援多重值,例如
{{ variablename }}。 僅當您的查詢支援多重值時,才選擇此選項。 - 併入全部
- 啟用多值選項時,可以選擇包含全部。 不論您的特定選擇為何,查詢都會選擇特定時間範圍內的所有可用值和未來值。 選擇這兩個選項時,預設會選擇所有變數選項,也可以取消選擇一個或多個變數選項。 如果兩個選項都未指定,則一次只能選擇一個變量值。
-
對於
query類型的變數:-
指定查詢來源 (
logs或metrics)。 -
對於
variable type,請指定values,對於logs.metrics請指定metric names,metric labels,或label values。 如果選擇metric labels,請選擇要用於顯示數值的標籤。 -
對於
logs,請選擇要查詢的記錄鍵來定義欄位。 當前變量值的清單以字母數字順序顯示在數值預覽中。 -
針對
metrics,在 Metrics regex 中輸入 regex 表達式,以取得您希望顯示的度量單位清單。 例如,^kube(.*)會返回所有以 kube 開頭的公制名稱。-
label values, 公制標籤,選擇顯示數值的標籤。 插入變數使標籤動態,例如Pod Name = {{ pod }}。 -
label values,對於 Label 過濾器,請為您的查詢建立一個或多個嵌套變數和額外的過濾層。 例如,您可以選擇依群集篩選標籤,選擇的值是{{ podvalue }}或硬編碼的群集名稱。 -
metrics,變量值顯示名稱,定義值在下拉選單中的顯示方式。數值預覽中會顯示欄位的目前變量值清單。
-
-
對於排序值,選擇如何在值預覽中排序資料。
-
-
按一下儲存。
變數也可以從已定義變數的清單中編輯或刪除。
在查詢中使用變數
除了在自訂儀表板中使用變數外,您還可以在 Lucene、DataPrime, 和 PromQL 查詢中使用已定義的變數。
Lucene 查詢
您可以在 Lucene 查詢中使用定義的變數。 例如,product_id:{{ pid }},其中 pid 是變量名稱(不是顯示名稱)、
DataPrime 查詢
建立變數後,使用者選擇的變數值可以在 DataPrime 查詢中使用 $p.<variable_name> 作為 查詢參數。
PromQL 查詢
在 PromQL 查詢語言中使用 {{ variable_name }}。
例如,PromQL 查詢 sum(kube_pod_owner{pod=~"{{ pod }}"}) 用於彙集與 Kubernetes pod 相關的度量。{pod=~"{{ pod }}"} 是一個標籤選擇器,可過濾名稱與變量值相符的特定 pod 的 kube_pod_owner 度量。 {{ pod }} 占位符是模板變數,在執行查詢時會取代實際的
pod 名稱。
您也可以在 PromQL 查詢中使用預定義變數。
| 變數 | 說明 | 範例 |
|---|---|---|
${__range} |
這個變數代表儀表板時間範圍的持續時間。 它會以 PromQL 支援的間隔字串呈現。 例如,如果選擇時間範圍從 13.00 到 14.30,則 ${__range} 變數的計算方式為 90m。 |
1d, 5m |
${__range_s} |
以選取時間範圍內的秒數計算。 | 60s, 180s |
${__range_ms} |
以選取時間範圍內的毫秒數計算。 | 60ms, 180ms |
例如,您可以在 sum_over_time 中使用 __range variable。
sum_over_time(kube_pod_owner[${__range}])