全部產品
Search
文件中心

Simple Log Service:跨日誌庫(Logstore)查詢與分析

更新時間:Nov 20, 2024

資料集(Storeview) 支援多 Store 聯集查詢分析能力,本文介紹日誌型資料集(Storeview)的建立,以及查詢分析的使用方式。

建立日誌型資料集

前提條件

已建立Project、標準型Logstore並完成日誌採集。具體操作,請參見建立專案Project建立Logstore資料擷取概述

操作步驟

  1. 登入Log Service控制台,在Project列表,單擊開啟目標Project。

  2. 在左側導覽列選擇資料集 > 日誌型資料集,然後單擊立即建立image建立日誌型資料集

    image

  3. 建立資料集對話方塊,輸入資料集名稱,並添加關聯的Logstore,然後單擊確定。資料集建立需要等待大約一分鐘。image

    說明
    • 每個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。

image

分析功能說明

資料集支援跨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僅支援extendwhere關鍵字)。預定義可以用於對部分資料進行過濾及適配彙總分析中欄位命名不一致問題等情境(彙總分析需要欄位 key 一致,即要彙總logstore-1的a欄位和logstore-2的b欄位時需要通過extend a = b使得列名保持一致)。

以下列兩個情境為例:

  • 情境 1:

    日誌型資料集關聯的是相同服務的不同Logstore,Logstore日誌內容均一致。該情境下,需要先檢查不同Logstore的索引配置是否相同(如均是全文索引,或需要的欄位索引配置一致),而後將需要關聯的Logstore添加到日誌型資料集中。

    建立日誌型資料集後,即可正常使用SQL進行分析,如圖所示統計近期15分鐘的不同status的結果為兩個logstore所有日誌的彙總結果。

    image

  • 情境 2

    日誌型資料集關聯的是相同服務的不同Logstore,但是Logstore的日誌部分欄位命名不同。此時可以通過預定義SPL重新定義一個新的欄位與另一個Logstore的key名對齊。如圖所示,使用SPL語句*|extend request_method = methodmethod欄位重新命名為 request_method欄位。點擊預覽資料,可以預覽預定義的結果資料。

    image.png後續可以使用 request_method進行查詢分析。

    image.png

常見的查詢/分析結果樣本

情境描述

CreateStoreView時預定義Query

StoreView查詢分析頁面輸入Query

輸出結果

logstore-1、logstore-2均包含key 列

key:123

包含key:123的行

logstore-1、logstore-2均包含a、b列

*| select a where b=1

滿足b =1的全部a

logstore-1、logstore-2均包含key、a列

key:123

*| select a

滿足key:123的全部a

logstore-1、logstore-2均包含key、a列

key:123|where a>1

*| select a

同時滿足key:123a > 1a

logstore-1、logstore-2均包含key、a列

key:123|where a>1 |extend y=upper(a)

*| select *

返回滿足條件的所有列(包括y列)

logstore-1包含a,b,c,logstore-2包含b,c,d

select a,b,c,d

返回a、b、c、d列,空值填null

logstore-1有 a和b兩個索引欄位, logstore-2有 b和c兩個索引欄位

a:*** and b:*** | select a, count(1) group by a

在logstore-2中沒有a的情況下,只統計logstore-1的資料。

部分不一致情況的處理

  • 查詢語句同一個欄位在兩個Logstore配置的欄位類型不一致時,可以正常返回。

  • 分析語句中僅在某些Store中包含對應欄位情境時,僅返回包含對應欄位Store的結果資料。

  • 分析語句多個Store之間索引欄位Key索引配置不一致時,將返回報錯,不返回結果。

相關文檔

資料集(StoreView)概述

管理資料集的API介面,請參見: