您可以通過設定不同的日誌主題(Topic)對採集到的文本日誌進行分類,例如按伺服器類型、使用者區分。
配置日誌主題
前提條件
已建立Project、標準型Logstore。具體操作,請參見建立專案Project、建立Logstore。
已建立機器組。
操作步驟
您可通過控制台或API方式配置日誌主題。
控制台方式
API方式
如果需要使用API建立Logtail採集配置,請使用CreateConfig。 日誌主題相關的參數,請參見Logtail配置的topicFormat
參數。
日誌主題類型
機器組Topic
Simple Log ServiceProject支援將一個Logtail配置應用到多個機器組。使用機器組Topic可用於區分來自不同機器組的日誌。Logtail上報資料時,會將伺服器所在機器組的機器組Topic作為日誌主題上傳至Simple Log ServiceProject。使用者在查詢日誌時需要指定日誌主題作為查詢條件。
檔案路徑提取
檔案路徑提取方式用於區分不同使用者或應用產生的日誌資料。如果不同的使用者或應用將日誌儲存在不同的頂級目錄中,但是下級目錄和記錄檔名相同,Log Service在採集日誌時無法明確區分日誌是由哪個使用者或應用產生的。
Logtail通過Regex來完整匹配檔案路徑,並將運算式匹配的結果(使用者名稱或應用程式名稱)作為日誌主題(Topic)上傳至Log Service。使用者在查詢日誌時需要指定日誌主題作為查詢條件。
說明檔案路徑的Regex中,需要對正斜線(/)進行轉義。
情境1:不同使用者將日誌記錄在不同目錄下,但是記錄檔名稱相同,目錄路徑如下所示。
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.log
如果在Logtail配置中僅設定檔路徑為
/data/logs
且檔案名稱為service.log
,Logtail會將三個service.log
檔案中的內容採集至同一個Logstore中,因此無法區分日誌具體由哪個使用者產生。您可以使用Regex提取檔案路徑中的值,產生不同的日誌主題。Regex
\/data\/logs\/(.*)\/serviceA\/.*
提取結果
__topic__: userA __topic__: userB __topic__: userC
情境2:如果單個日誌主題不足以區分日誌的來源,您可以在記錄檔路徑中配置多個正則擷取的群組來提取關鍵資訊。其中擷取的群組包括命名擷取的群組(?P<name>)或非命名擷取的群組。如果全是命名擷取的群組,則產生的tag欄位為
__tag__:{name}
;如果全是非命名擷取的群組,則產生的tag欄位為__tag__:__topic_{i}__
,其中{i}
為擷取的群組的序號。說明當Regex中存在多個擷取的群組時,不會產生
__topic__
欄位。例如,檔案路徑為
/data/logs/userA/serviceA/service.log
,您可以通過以下方式提取檔案路徑中的多個值。樣本1:使用非命名擷取的群組進行正則提取。
Regex
\/data\/logs\/(.*?)\/(.*?)\/service.log
提取結果
__tag__:__topic_1__: userA __tag__:__topic_2__: serviceA
樣本2:使用命名擷取的群組進行正則提取。
Regex
\/data\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/service.log
提取結果
__tag__:user: userA __tag__:service: serviceA
自訂
輸入
customized:// + 自訂佈景主題名
,使用自訂的靜態日誌主題。重要Logtail 0.16.21(Linux系統)及以上版本支援該設定。
根據日誌主題查詢日誌
在日誌查詢分析頁面,輸入__topic__: userA
、__tag__:__topic_1__: userA
查詢相應主題的日誌。更多資訊,請參見查詢文法。