在業務情境中,日誌資料可能儲存在Simple Log ServiceProject的不同Logstore/MetricStore中或不同地區的Project中。Simple Log ServiceProject的資料集功能支援跨地區、跨Store聯集查詢,可協助您提升工作效率。本文為您介紹如何使用日誌型資料集和時序型資料集。
什麼是StoreView
在Log Service的Project中,Storeview、Logstore、MetricStore都是重要的資源。但是Storeview並不是用於儲存日誌的實體資源,而是基於Logstore和MetricStore建立的虛擬資源,它們用於管理和儲存多個Logstore或多個MetricStore之間的關聯關係。通過資料集(Storeview),您可以對不同Logstore(或不同MetricStore)中的日誌進行統一查詢,但是資料集(Storeview)不支援對日誌的修改操作。資料集(Storeview)分為日誌型資料集和時序型資料集,其中日誌型資料集支援對不同Logstore進行查詢與分析以及對關聯的Store通過SPL文法進行預定義,時序型資料集僅支援不同MetricStore之間進行查詢。
在日誌型資料集/時序型資料集中不同Logstore/MetricStore的日誌內容支援關聯查詢,如Logstore1、Logstore2中均包含age欄位,同時Logstore1、Logstore2通過資料集1關聯,則在資料集1中查詢age欄位將返回Logstore1、Logstore2中的全部結果。
許可權說明
使用RAM使用者或扮演RAM角色使用資料集時,需要具備相應的許可權。使用阿里雲主帳號為RAM使用者或RAM角色授權的操作步驟,請參見建立RAM使用者及授權、建立可信實體為阿里雲服務的RAM角色及授權和使用RAM角色實現跨雲帳號的資源訪問。
您可以為使用者授予系統權限原則或自訂權限原則。
系統權限原則:統一由阿里雲建立,使用者只能使用,不能修改,策略的版本更新由阿里雲維護。
Log Service的唯讀許可權AliyunLogReadOnlyAccess。
Log Service的系統管理權限AliyunLogFullAccess。
自訂權限原則:使用者可以自主建立、更新和刪除,策略的版本更新由使用者自己維護。
建立資料集或在資料集中查詢時,RAM使用者或RAM角色需要具有關聯的所有Logstore、MetricStore的GetLogs - 查詢日誌庫日誌許可權,即在自訂權限原則中添加如下內容:
重要權限原則中的Logstore包括了Logstore和MetricStore。當您的操作對象為MetricStore時,如下策略同樣適用。
權限原則中的storeview包括了日誌型資料集和時序型資料集。
{ "Version": "1", "Statement": [ { "Action": "log:GetLogStoreLogs", "Resource":[ "acs:log:*:*:project/${projectName}/Logstore/*", "acs:log:*:*:project/${projectName}/storeview/*" ], "Effect": "Allow" } ] }
使用限制
每個Simple Log ServiceProject支援總共最多建立10個日誌型資料集/時序型資料集。
每個日誌型資料集/時序型資料集最多關聯50個Logstore/MetricStore。
日誌型資料集/時序型資料集中的所有Logstore/MetricStore必須屬於同一個阿里雲帳號。
支援地區
目前以下地區支援查詢、分析和預定義功能,其他地區目前支援查詢功能。查詢與分析區別請參見查詢與分析概述。
華東1(杭州) | 泰國(曼穀) |
華北2(北京) | 菲律賓(馬尼拉) |
華南1(深圳) | 韓國(首爾) |
預定義能力說明
概念
日誌型資料集(StoreView)支援在建立StoreView 時對於關聯的Store通過SPL文法進行預定義(預定義SPL僅支援extend、where關鍵字),預定義可以用於對於部分資料進行過濾及適配彙總分析中欄位命名不一致問題等情境(彙總分析需要欄位 key 一致,即要彙總logstore1的a
欄位和logstore2的b
欄位時需要通過extend a = b
使得列名保持一致),具體詳情請參見樣本。
使用限制
目前日誌型資料集(StoreView)支援預定義,時序型資料集(StoreView)不支援預定義。
支援指令
日誌型資料集(StoreView)預定義支援extend、where運算元。
SQL和SPL支援的函數請參見函數概覽。
樣本
建立或者修改日誌型資料集請參見建立日誌型資料集。
例如,當需要彙總Logstore1的a
欄位和Logstore2的b
欄位時,可以在建立資料集或者修改資料集的時候通過extend a = b
(預定義)使列名保持一致。
樣本1
在Logstore1預定義* | where a>1
,則表示StoreView中僅命中a>1
的日誌參與後續的分析。
樣本2
在Logstore1預定義 *| extend b = a
,表示StoreView中在 Logstore1中增加一列b
,與a
列的值相同,用於後續彙總。
查詢能力說明
日誌型資料集(StoreView)
日誌型資料集(StoreView)支援跨logstore查詢能力,即如果日誌型資料集中關聯了logstore-1和logstore-2兩個Store,logstore-1和logstore-2中均包含欄位request_method
,對於查詢語句:(request_method:GET or request_method:POST) and status in [200 299]
的結果將返回logstore-1和logstore-2中符合的日誌結果。日誌型資料集(StoreView)查詢詳情請參見查詢文法與功能。
假如日誌型資料集中包含兩個日誌內容完全一致Logstore。此時查詢對應的關鍵字,即可返回不同Logstore裡面的所有結果,可以通過tag欄位判斷日誌是來自哪一個Logstore。
時序型資料集(StoreView)
時序型資料集(StoreView)支援跨Store查詢能力,即如果時序型資料集(StoreView)中關聯了metricstore1和metricstore2 兩個Store,直接在查詢方塊中輸入PromQL語句,後端計算引擎會自行完成跨多個時序庫的計算處理。時序型資料集(StoreView)查詢詳情請參見時序資料查詢和分析簡介。建立或者修改時序型資料集(StoreView)請參見跨時序庫(Metricstore)查詢。
目前時序型資料集(Storeview)支援PromQL查詢,不支援SQL查詢、分析和預定義功能。
分析能力說明
概念
資料集支援跨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名不一致的情境,可以通過預定義對部分資料進行過濾及對欄位重新命名。具體操作請參見預定義能力說明。
使用限制
目前日誌型資料集(StoreView)支援資料分析,時序型資料集(StoreView)不支援資料分析。
支援函數
SQL和SPL支援的函數請參見函數概覽。
樣本
樣本1
日誌型資料集關聯的是相同服務的不同Logstore,Logstore日誌內容均一致。該情境下,需要先檢查不同Logstore的索引配置是否相同(如均是全文索引,或需要的欄位索引配置一致),而後將需要關聯的Logstore添加到日誌型資料集中。
建立日誌型資料集後,即可正常使用SQL進行分析,如圖所示統計近期15分鐘的不同status
的結果為兩個logstore所有日誌的彙總結果。
樣本2
日誌型資料集關聯的是相同服務的不同Logstore,但是Logstore的日誌部分欄位命名不同。此時可以通過預定義SPL重新定義一個新的欄位與另一個Logstore的key名對齊。如圖所示,使用SPL語句*|extend request_method = method
將method
欄位重新命名為 request_method
欄位。點擊預覽資料,可以預覽預定義的結果資料。
後續可以使用 request_method
進行查詢分析。
資料集(Storeview)與常規Store功能區別
功能項 | logstore/metricstore | Storeview |
快速分析 | 支援 | 支援 |
統計圖表 | 支援 | 支援 |
儀錶盤 | 支援 | 支援 |
日誌下載 | 支援 | 支援 |
快速查詢 | 支援 | 不支援 |
定時SQL | 支援 | 不支援 |
警示 | 支援 | 不支援 |
日誌聚類 | 支援 | 不支援 |
欄位分析 | 支援 | 不支援 |