變數的文法為${{變數名|預設值}}或者${{變數名|預設值|首碼}},它允許您動態地調整查詢參數中的預留位置。通過設定這些變數,您可以對統計圖表或整個儀錶盤進行篩選,而無需直接改動查詢分析語句。本文向您介紹如何對儀錶盤整體及單個統計圖表進行篩選。
添加過濾器篩選儀錶盤
過濾器類型
每張統計圖表實際為一個查詢和分析語句,過濾器用於為儀錶盤中的所有統計圖表批量修改查詢條件或替換預留位置變數,實現對整個儀錶盤資料的篩選功能。Log Service支援三種類型的過濾器:
-
過濾器類型的過濾器:通過日誌欄位的Key和Value進行過濾。在原查詢和分析語句的結果中,尋找包含或者不包含
Key:Value的日誌。例如查看不同要求方法的訪問PV時,可以添加過濾器類型的過濾器,通過動態清單項目快速查看。 -
變數類型的過濾器:先添加變數,然後添加過濾器,自動將統計圖表的查詢和分析語句中的變數替換為您選擇的變數值。例如查看每10秒、60秒或600秒的訪問PV。
-
時序過濾器:採集時序資料後,可以通過Label和Value進行篩選,多個過濾條件取交集。
過濾器類型的過濾器
變數類型的過濾器
時序過濾器
添加變數替換篩選單個統計圖表
您可以對單個統計圖表設定變數替換,Log Service將在當前統計圖表的左上方添加一個過濾器,從而實現對單個統計圖表的篩選。此處以查看不同時間間隔訪問PV的表格樣本,配置步驟如下。
1. 組態變數替換
-
在編輯圖表頁面左側配置查詢時間範圍、LogStore、設定變數的查詢分析語句。
查看不同時間間隔訪問PV的查詢分析語句如下,其中的
${{date|60}}代表設定變數date,預設值是60。* | select __time__ - __time__ % ${{date | 60}} as time, COUNT(*) as pv, avg(request_time) as duration, request_method GROUP BY time, request_method order by time limit 1000執行查詢後,資料來源選擇 Logstore 為 website_log,時間範圍設為 15 Minutes(Relative),查詢結果以資料表形式展示按時間和要求方法分組的PV及平均耗時資料。
-
組態變數替換。
-
在編輯圖表頁面右側圖表類型選擇表格,單擊。
-
在變數替換彈框設定變數Key為date,變數的顯示名稱為時間,變數值的顯示名稱為min、hour,對應的變數值為60、3600。
-
-
單擊頁面右上方的確定,然後單擊右上方保存,在儲存儀錶盤對話方塊,單擊確認。
2. 篩選統計圖表
設定完成後,統計圖表的左上方將出現一個過濾器。選擇對應的值後,Log Service將根據您選擇的值執行一次查詢與分析操作。例如您選擇hour,對應的查詢分析語句為:
(*)| select __time__ - __time__ % 3600 as time, COUNT(*) as pv, avg(request_time) as duration, request_method GROUP BY time, request_method order by time limit 1000
變數與互動事件配合使用
在配置統計圖表的互動事件時,您可以設定變數,這樣,每當您點擊目標互動事件,該變數就會自動更新為觸發事件的值,從而便於您進行相應的查詢與分析。具體樣本,請參見配置樣本。
在開啟日誌庫配置彈窗中,選擇目標日誌庫(如website_log),並在過濾語句中通過添加變數按鈕引用變數,例如* | SELECT date_format(__time__ - __time__ % 60, '%H:%i:%s') as "${time}",其中${time}即為互動事件中設定的變數。
變數的高階使用(結合首碼使用)
篩選儀錶盤或者統計圖表時,還可以結合首碼,使用${{變數名|預設值|首碼}}文法。
-
未設定變數值時,查詢使用預設值進行統計。
-
設定變數值後,查詢分析語句結合首碼與變數值進行統計。
篩選儀錶盤:HTTP方法(http_method)過濾情境
變數說明
-
變數格式:
${{method_filter|http_method in ('GET','POST')|http_method =}} -
查詢分析語句:
(*)|select status, count(1) as err_count where ${{method_filter|request_method in ('GET','POST')|request_method =}} and status>=400 group by status-
未設定變數時:預設統計GET/POST請求中400+狀態的錯誤分布,查詢分析語句為:
(*)|select status, count(1) as err_count where request_method in ('GET','POST') and status>=400 group by status -
設定變數為
'DELETE'時:切換為分析DELETE方法的錯誤狀態,查詢分析語句為:(*)| select status, count(1) as err_count where request_method ='DELETE' and status>=400 group by status
-
操作步驟
-
配置圖表:在頁面左側配置查詢時間範圍、LogStore、設定變數的查詢分析語句。在頁面右側選擇表格。單擊頁面上方的應用查看圖表配置效果,然後單擊確定儲存圖表。
查詢分析語句樣本為
* | select status, count(1) as err_count where ${{method_filter|request_method in ('GET','POST')|request_method =}} and status>=400 group by status,其中${{method_filter|...|...}}為變數替換過濾器文法,資料來源選擇 website_log。 -
組態變數類型過濾器:在過濾器面板,添加
method_filter變數下拉選擇的值。類型選擇變數替換,在靜態清單項目中依次添加
GET、POST、PUT、DELETE,單擊確定。 -
篩選儀錶盤:單擊過濾器,選擇
DELETE時,使用(*)| select status, count(1) as err_count where request_method ='DELETE' and status>=400 group by status查詢分析語句進行統計展示。
篩選統計圖表:請求時間(request_time)閾值過濾情境
變數說明
-
變數格式:
${{slow_query|request_time>50|request_time>}} -
查詢分析語句:
(*)| select request_uri, avg(request_time) as avg_time where ${{slow_query|request_time>50|request_time>}} group by request_uri order by avg_time desc-
未設定變數時:預設篩選請求時間超過50ms的介面,按平均耗時降序排列,查詢分析語句為:
(*)| select request_uri, avg(request_time) as avg_time where request_time>50 group by request_uri order by avg_time desc -
設定變數為
1000ms時:調整為分析超1秒的慢介面,查詢分析語句為:(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time desc
-
操作步驟
-
配置圖表:在編輯圖表頁面左側配置查詢時間範圍、LogStore、設定變數的查詢分析語句。
在右側圖表類型地區選取項目表格,在左下方編輯包含變數模板的查詢分析語句,然後在右側變數替換地區組態變數 Key 和顯示名稱。設定完成後單擊右上方確定。
-
組態變數替換:在編輯圖表頁面右側,單擊變數替換,在變數替換彈框,添加
slow_query變數下拉選擇的值。變數值列表中依次添加:顯示名稱 50ms(替換值
50,設為預設值)、100ms(替換值100)、200ms(替換值200)、300ms(替換值300)、400ms(替換值400)、500ms(替換值500)、1000ms(替換值1000),然後單擊確定。 -
篩選圖表:單擊統計圖表的左上方篩選框。選擇
1000ms時,使用(*)| select request_uri, avg(request_time) as avg_time where request_time>1000 group by request_uri order by avg_time desc查詢分析語句進行統計展示。


