Log Service提供JSON模式快速採集JSON日誌。採集到日誌後,您可以進行多維度分析、加工、投遞等操作。本文介紹如何通過Log Service控制台建立JSON模式的Logtail配置採集日誌。
方案概覽
假設您的JSON原始日誌為:
{"@timestamp":"2024-08-16T16:23:22+08:00","server_addr":"127.0.0.1","remote_addr":"127.0.0.1","scheme":"http","request_method":"POST","request_uri": "/wp-admin/admin-ajax.php","request_length": "1161","uri": "/wp-admin/admin-ajax.php", "request_time":1.099,"body_bytes_sent":78,"bytes_sent":675,"status":"200","upstream_time":"1.097","upstream_host":"unix:/dev/shm/php-cgi.sock","upstream_status":"200","host":"www.example.com","http_referer":"http://www.example.com/wp-admin/index.php","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"}
經過JSON解析外掛程式處理後的結果是:
採集指定檔案的文本日誌,分為5步:
1. 選擇Project和Logstore
2. 機器組配置
3. Logtail配置
4. 查詢分析配置
5. 查詢日誌
前提條件
已建立Logtail機器組並添加相應伺服器,建立機器組的步驟,請參見建立使用者自訂標識機器組(推薦)或建立IP地址機器組。
安裝Logtail的主機需開放80(HTTP)連接埠和443(HTTPS)連接埠。ECS執行個體的連接埠由安全性群組規則控制,添加安全性群組規則的步驟請參見添加安全性群組規則。
伺服器日誌的內容持續新增。Logtail只採集增量日誌,如果下發Logtail配置後記錄檔無更新,則Logtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌。
1. 選擇Project和Logstore
登入Log Service控制台。
單擊控制台右側的快速接入資料卡片。
在接入資料頁面,尋找JSON - 文本日誌並單擊。
選擇目標Project和Logstore,日誌會被採集到對應的Logstore。
2. 機器組配置
Logtail配置會應用到指定的機器組,從而採集伺服器上的資料。無論是否已有機器組,都必鬚根據實際需求正確選擇使用情境和安裝環境,這將影響後續的頁面配置。
3. Logtail配置
3.1 全域配置
全域配置
配置項 | 說明 |
配置名稱 | Logtail配置名稱,在其所屬Project內必須唯一。建立Logtail配置成功後,無法修改其名稱。 |
日誌主題類型 | 選擇日誌主題(Topic)的產生方式。更多資訊,請參見日誌主題。 |
進階參數 | 其它可選的與配置全域相關的進階功能參數,請參見建立Logtail流水線配置。 |
3.2 輸入配置
輸入配置
配置項 | 說明 |
檔案路徑 | 根據日誌在主機(例如ECS)上的位置,設定日誌目錄和檔案名稱。 目錄名和檔案名稱均支援完整模式和萬用字元模式,檔案名稱規則請參見Wildcard matching。其中,日誌路徑萬用字元只支援星號(*)和半形問號(?)。 記錄檔尋找模式為多層目錄匹配,即合格指定目錄(包含所有層級的目錄)下所有合格檔案都會被尋找到。例如: /apsara/nuwa/**/*.log 表示/apsara/nuwa 目錄(包含該目錄的遞迴子目錄)中尾碼名為.log的檔案。
/var/logs/app_*/**/*.log 表示/var/logs 目錄下所有符合app_* 格式的目錄(包含該目錄的遞迴子目錄)中尾碼名為.log 的檔案。
/var/log/nginx/**/access* 表示/var/log/nginx 目錄(包含該目錄的遞迴子目錄)中以access 開頭的檔案。
|
最大目錄監控深度 | 設定日誌目錄被監控的最大深度,即檔案路徑中萬用字元** 匹配的最大目錄深度。0代表只監控本層目錄。 |
檔案編碼 | 選擇記錄檔的編碼格式。 |
首次採集大小 | 配置首次生效時,匹配檔案的起始採集位置距離檔案結尾的大小。首次採集大小設定值為1024 KB。 您可以通過此處修改首次採集大小,取值範圍為0~10485760,單位為KB。 |
採集黑名單 | 開啟採集黑名單開關後,可進行黑名單配置,即可在採集時忽略指定的目錄或檔案。支援完整匹配和萬用字元匹配目錄和檔案名稱。其中,萬用字元只支援星號(*)和半形問號(?)。
重要 如果您在配置檔案路徑時使用了萬用字元,但又需要過濾掉其中部分路徑,則需在採集黑名單中填寫對應的完整路徑來保證黑名單配置生效。 例如您配置檔案路徑為/home/admin/app*/log/*.log ,但要過濾/home/admin/app1* 目錄下的所有子目錄,則需選擇目錄黑名單,配置目錄為/home/admin/app1*/** 。如果配置為/home/admin/app1* ,黑名單不會生效。 匹配黑名單過程存在計算開銷,建議黑名單條目數控制在10條內。 目錄路徑不能以正斜線(/)結尾,例如將設定路徑為/home/admin/dir1/ ,目錄黑名單不會生效。
支援按照檔案路徑黑名單、檔案黑名單、目錄黑名單設定,詳細說明如下: 檔案路徑黑名單選擇檔案路徑黑名單,配置路徑為/home/admin/private*.log ,則表示在採集時忽略/home/admin/ 目錄下所有以private開頭,以.log結尾的檔案。 選擇檔案路徑黑名單,配置路徑為/home/admin/private*/*_inner.log ,則表示在採集時忽略/home/admin/ 目錄下以private開頭的目錄內,以_inner.log結尾的檔案。例如/home/admin/private/app_inner.log 檔案被忽略,/home/admin/private/app.log 檔案被採集。
檔案黑名單選擇檔案黑名單,設定檔名為app_inner.log ,則表示採集時忽略所有名為app_inner.log 的檔案。 目錄黑名單選擇目錄黑名單,配置目錄為/home/admin/dir1 ,則表示在採集時忽略/home/admin/dir1 目錄下的所有檔案。 選擇目錄黑名單,配置目錄為/home/admin/dir* ,則表示在採集時忽略/home/admin/ 目錄下所有以dir開頭的子目錄下的檔案。 選擇目錄黑名單,配置目錄為/home/admin/*/dir ,則表示在採集時忽略/home/admin/ 目錄下二級目錄名為dir的子目錄下的所有檔案。例如/home/admin/a/dir 目錄下的檔案被忽略,/home/admin/a/b/dir 目錄下的檔案被採集。
|
允許檔案多次採集 | 預設情況下,一個記錄檔只能匹配一個Logtail配置。如果檔案中的日誌需要被採集多份,需要開啟允許檔案多次採集開關。 |
進階參數 | 其它可選的與檔案輸入外掛程式相關的進階功能參數,請參見建立Logtail流水線配置。 |
3.3 處理配置
日誌範例,支援多條日誌;添加日誌範例可協助您配置Tlog相關參數,降低配置難度,建議添加。
多行模式,如果日誌為多行日誌,請使用該選項。
類型,選擇多行JSON。
切分失敗處理方式,選擇保留單行。
處理模式
使用JSON解析處理外掛程式,單擊JSON解析可進入處理外掛程式詳細配置頁面。您可在此頁面做進一步配置(本樣本使用預設配置)。
處理配置
配置項 | 說明 |
日誌範例 | 待採集日誌的範例,請務必使用實際情境的日誌。日誌範例可協助您配置Tlog相關參數,降低配置難度。支援添加多條範例,總長度不超過1500個字元。 [2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
|
多行模式 | 多行日誌的類型:多行日誌是指每條日誌分布在連續的多行中,需要從日誌內容中區分出每一條日誌。 自訂:通過行首Regex區分每一條日誌。 多行JSON:每個JSON對象被展開為多行,例如: {
"name": "John Doe",
"age": 30,
"address": {
"city": "New York",
"country": "USA"
}
}
切分失敗處理方式: Exception in thread "main" java.lang.NullPointerException
at com.example.MyClass.methodA(MyClass.java:12)
at com.example.MyClass.methodB(MyClass.java:34)
at com.example.MyClass.main(MyClass.java:½0)
對於以上日誌內容,如果Log Service切分失敗:
|
處理模式 | 處理外掛程式組合,包括原生外掛程式和拓展外掛程式。有關處理外掛程式的更多資訊,請參見處理外掛程式概述。
重要 處理外掛程式的使用限制,請以控制台頁面的提示為準。 低於2.0版本的Logtail: 2.0版本的Logtail:
|
重要 Logtail配置生效時間最長需要3分鐘,請耐心等待。
4. 查詢分析配置
Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引。
5. 查詢日誌
單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。
您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。查詢和分析日誌的詳細步驟,請參見查詢和分析日誌。
說明 如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。