資料檢視(Storeview) 支援多 Store 聯集查詢分析能力,本文介紹日誌型資料檢視(Storeview)的建立,以及查詢分析的使用方式。
建立日誌型資料檢視
前提條件
已建立Project、標準型Logstore並完成日誌採集配置。具體操作,請參見管理Project、建立基礎LogStore和資料擷取概述。
操作步驟
-
登入Log Service控制台,在Project列表,單擊開啟目標Project。
-
在左側導覽列選擇,然後單擊立即建立或
建立日誌型資料檢視。 -
在建立資料檢視對話方塊,輸入資料檢視名稱,並添加關聯的LogStore,然後單擊確定。資料檢視建立需要等待大約一分鐘。
說明-
每個Simple Log ServiceProject支援總共最多建立10個日誌型資料檢視。
-
每個日誌型資料檢視最多關聯50個LogStore。
-
日誌型資料檢視中的所有LogStore必須屬於同一個阿里雲帳號。
-
查詢功能說明
日誌型資料檢視支援跨LogStore查詢能力,即如果日誌型資料檢視中關聯了LogStore-1和LogStore-2兩個Store,LogStore-1和LogStore-2中均包含欄位a,對於查詢分析語句:* | select a from log where a > 1的結果將返回LogStore-1和LogStore-2中欄位a符合a > 1的日誌結果。
假如日誌型資料檢視中包含兩個日誌內容完全一致LogStore。此時查詢對應的關鍵字,即可返回不同LogStore裡面的所有結果,可以通過tag欄位判斷日誌是來自哪一個LogStore。
在查詢結果的日誌詳情中,通過 __tag__:__logstore__ 欄位可查看該條日誌所屬的 LogStore,例如值為 logstore-2 表示該日誌來自 LogStore-2。
分析功能說明
資料檢視支援跨Store彙總統計分析能力,即如果StoreView中關聯了LogStore-1和LogStore-2兩個Store,LogStore-1和LogStore-2中均包含欄位 a,對於查詢分析語句:* | select a, count(1) group by a 的結果將返回LogStore-1 和LogStore-2的欄位a的總數。
由於彙總分析需要欄位key一致,對於日誌內容相同但是key名不一致的情境,可以通過預定義對部分資料進行過濾及對欄位重新命名。比如需要彙總LogStore-1的a欄位和LogStore-2的b欄位時,需要先將b重新命名為a。
日誌型資料檢視(StoreView)支援在建立StoreView時對於關聯的Store通過SPL預法進行預定義(預定義SPL僅支援extend、where關鍵字)。預定義可以用於對部分資料進行過濾及適配彙總分析中欄位命名不一致問題等情境(彙總分析需要欄位 key 一致,即要彙總LogStore-1的a欄位和LogStore-2的b欄位時需要通過extend a = b使得列名保持一致)。
以下列兩個情境為例:
-
情境 1:
日誌型資料檢視關聯的是相同服務的不同LogStore,LogStore日誌內容均一致。該情境下,需要先檢查不同LogStore的索引配置是否相同(如均是全文索引,或需要的欄位索引配置一致),而後將需要關聯的LogStore添加到日誌型資料檢視中。
建立日誌型資料檢視後,即可正常使用SQL進行分析,統計近期15分鐘的不同
status的結果為兩個LogStore所有日誌的彙總結果。樣本 SQL 陳述式為
* | SELECT status, count(*) AS PV GROUP BY status,查詢結果顯示 status 200 的 PV 為 4,status 302 的 PV 為 8。 -
情境 2
日誌型資料檢視關聯的是相同服務的不同LogStore,但是LogStore的日誌部分欄位命名不同。此時可以通過預定義SPL重新定義一個新的欄位與另一個LogStore的key名對齊。例如,使用SPL語句
*|extend request_method = method將method欄位重新命名為request_method欄位。點擊預覽資料,可以預覽預定義的結果資料。後續可以使用
request_method進行查詢分析。例如,在查詢編輯器中輸入SQL語句
* | SELECT request_method, count(*) GROUP BY request_method order by request_method desc,單擊查詢/分析,在統計圖表頁簽中查看結果,可以看到 GET 請求 4 次、null 請求 1 次。
常見的查詢/分析結果樣本
|
情境描述 |
CreateStoreView時預定義Query |
StoreView查詢分析頁面輸入Query |
輸出結果 |
|
LogStore-1、LogStore-2均包含key 列 |
無 |
|
包含 |
|
LogStore-1、LogStore-2均包含a、b列 |
無 |
|
滿足 |
|
LogStore-1、LogStore-2均包含key、a列 |
|
|
滿足 |
|
LogStore-1、LogStore-2均包含key、a列 |
|
|
同時滿足 |
|
LogStore-1、LogStore-2均包含key、a列 |
|
|
返回滿足條件的所有列(包括y列) |
|
LogStore-1包含a,b,c,LogStore-2包含b,c,d |
無 |
|
返回a、b、c、d列,空值填null |
|
LogStore-1有 a和b兩個索引欄位, LogStore-2有 b和c兩個索引欄位 |
無 |
|
在LogStore-2中沒有a的情況下,只統計LogStore-1的資料。 |
部分不一致情況的處理
-
查詢語句同一個欄位在兩個LogStore配置的欄位類型不一致時,可以正常返回。
-
分析語句中僅在某些Store中包含對應欄位情境時,僅返回包含對應欄位Store的結果資料。
-
分析語句多個Store之間索引欄位Key索引配置不一致時,將返回報錯,不返回結果。
後續步驟
查詢日誌型資料檢視
在左側導覽列選擇,查看已建立的日誌型資料檢視。
更新日誌型資料檢視
-
在資料檢視列表,滑鼠懸浮在目標資料檢視上,單擊
,然後單擊修改。 -
在修改資料檢視面板,您可以修改已關聯的日誌庫,然後單擊確定。
在 Stores 地區,為每個 Store 分別選擇對應的專案和日誌庫(Logstore 或 SQL store),可單擊 + STORE 添加更多 Store。
刪除日誌型資料檢視
在資料檢視列表,滑鼠懸浮在目標資料檢視上,單擊
,然後單擊移除。
相關文檔
管理資料檢視的API介面,請參見: