極簡模式不對日志內容進行解析,每條日志都被作為一個整體被采集到日志服務中,極大簡化了日志采集流程。本文介紹如何通過日志服務控制臺創建極簡模式的Logtail配置采集日志。
前提條件
- 已創建Project和Logstore。更多信息,請參見創建Project和創建Logstore。
- 用于安裝Logtail的服務器具備訪問遠端服務器80端口和443端口的能力。
- 目標服務器持續產生日志。重要 Logtail只采集增量日志。如果下發Logtail配置后,日志文件無更新,則Logtail不會采集該文件中的日志。更多信息,請參見讀取文件。
背景信息
- 原始日志
127.0.0.1 - - [05/Jan/2023:11:40:39 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
- 被采集到日志服務后的日志
- 單行文本日志
一行日志內容為一條日志,即在日志文件中,以換行符分隔兩條日志。該模式下,您只需指定文件目錄和文件名稱即可,Logtail會按照每行一條日志進行采集。
- 多行文本日志
一條日志有多行內容。該模式下,您除了指定文件目錄和文件名稱外,還需配置日志樣例和行首正則表達式,Logtail通過行首正則表達式去匹配一條日志的行首,即確認一條日志的開頭,將未匹配部分作為該條日志的一部分,直到下一個行首出現。
操作步驟
- 登錄日志服務控制臺。
- 在接入數據區域,選擇多行-文本日志。此處以采集多行文本日志為例,如果您要采集單行文本日志,請選擇單行-文本日志。
- 選擇目標Project和Logstore,單擊下一步。
- 創建機器組。
- 如果您已有可用的機器組,請單擊使用現有機器組。
- 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
- 在ECS機器頁簽中,通過手動選擇實例方式選擇目標ECS實例,單擊創建。
具體操作,請參見安裝Logtail(ECS實例)。
重要 如果您的服務器是與日志服務屬于不同賬號的ECS、其他云廠商的服務器和自建IDC時,您需要手動安裝Logtail。更多信息,請參見安裝Logtail(Linux系統)或安裝Logtail(Windows系統)。手動安裝Logtail后,您必須在該服務器上手動配置用戶標識。具體操作,請參見配置用戶標識。
- 安裝完成后,單擊確認安裝完畢。
- 在創建機器組頁面,輸入名稱,單擊下一步。
日志服務支持創建IP地址機器組和用戶自定義標識機器組,詳細參數說明請參見創建IP地址機器組和創建用戶自定義標識機器組。
- 在ECS機器頁簽中,通過手動選擇實例方式選擇目標ECS實例,單擊創建。
- 選中目標機器組,將該機器組從源機器組移動到應用機器組,單擊下一步。
- 創建Logtail配置,單擊下一步。
參數 描述 配置名稱 Logtail配置名稱,在其所屬Project內必須唯一。創建Logtail配置成功后,無法修改其名稱。 您也可以單擊導入其他配置,導入已創建的Logtail配置。
日志路徑 根據日志在服務器上的位置,設置日志目錄和文件名稱。 - 如果是Linux系統中的日志路徑,必須以正斜線(/)開頭,例如/apsara/nuwa/.../app.Log。
- 如果是Windows系統中的日志路徑,必須以盤符開頭,例如C:\Program Files\Intel\...\*.Log。
目錄名和文件名支持完整名稱和通配符模式,文件名規則請參見Wildcard matching。日志文件查找模式為多層目錄匹配,即指定目錄(包含所有層級的目錄)下所有符合條件的文件都會被查找到。例如:- /apsara/nuwa/**/*.log表示/apsara/nuwa目錄(包含該目錄的遞歸子目錄)中后綴名為.log的文件。
- /var/logs/app_*/**/*.log表示/var/logs目錄下所有符合app_*格式的目錄(包含該目錄的遞歸子目錄)中后綴名為.log的文件。
- /var/log/nginx/**/access*表示/var/log/nginx目錄(包含該目錄的遞歸子目錄)中以access開頭的文件。
說明 日志路徑通配符只支持星號(*)和半角問號(?)。- 星號(*)表示匹配多個任意字符。
- 半角問號(?)表示匹配單個任意字符。
設置采集黑名單 打開設置采集黑名單開關后,可進行黑名單配置,即可在采集時忽略指定的目錄或文件。支持完整匹配和通配符模式匹配目錄和文件名。例如: - 選擇按目錄路徑,配置路徑為/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目錄下的內容被采集。
- 選擇按文件路徑,配置路徑為/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文件被采集。
說明- 目錄通配符只支持星號(*)和半角問號(?)。
- 星號(*)表示匹配多個任意字符。
- 半角問號(?)表示匹配單個任意字符。
- 如果您在配置日志路徑時使用了通配符,但又需要過濾掉其中部分路徑時,需在黑名單中填寫對應的完整路徑來保證過濾生效。
例如您配置日志路徑為/home/admin/app*/log/*.log,但要過濾/home/admin/app1*目錄下的所有子目錄,則需配置黑名單,即選擇按目錄路徑,配置路徑為/home/admin/app1*/** 。如果配置為/home/admin/app1*,則黑名單不會生效。
- 匹配黑名單過程存在計算開銷,建議黑名單條目數在10條內。
- 目錄路徑不能以正斜線(/)結尾,例如將設置路徑為/home/admin/dir1/,目錄黑名單不會生效。
是否為Docker文件 如果是Docker容器中的文件,您可打開是否為Docker文件開關,配置內部路徑與容器Tag。Logtail會自動監測容器的創建和銷毀,并根據Tag進行容器過濾,采集指定容器的日志。具體操作,請參見通過DaemonSet-控制臺方式采集容器文本日志。 模式 采集模式,默認為極簡模式-多行,可修改為其它模式。 日志樣例 請務必使用實際場景的日志,便于日志服務自動提取行首正則表達式。例如: [2020-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)
如果您是使用極簡模式采集單行文本日志,無需配置此參數。
行首正則表達式 Logtail通過行首正則表達式去匹配一條日志的行首,未匹配部分為該條日志的一部分。日志服務支持自動生成和手動輸入行首正則表達式。 - 自動生成行首正則表達式
填寫日志樣例后,單擊自動生成,生成行首正則表達式。
- 手動輸入行首正則表達式
填寫日志樣例后,單擊手動輸入正則表達式,手動配置。配置完成后,單擊驗證即可驗證您輸入的正則表達式是否正確。更多信息,請參見如何調試正則表達式。
如果您是使用極簡模式采集單行文本日志,無需配置此參數。
丟棄解析失敗日志 是否丟棄解析失敗的日志,具體說明如下: - 打開丟棄解析失敗日志開關,解析失敗的日志不上傳到日志服務。
- 關閉丟棄解析失敗日志開關,日志解析失敗時,原始日志將作為__raw_log__字段的值上傳到日志服務。
最大監控目錄深度 設置日志目錄被監控的最大深度。最大深度范圍:0~1000,0代表只監控本層目錄。 請根據您的需求選擇高級配置。如果沒有特殊需求,建議保持默認配置。參數 描述 啟用插件處理 當您的業務日志太復雜或不固定,固定解析模式(Nginx模式、完整正則模式、JSON模式等)無法滿足日志解析需求時,您可以打開啟用插件處理開關,添加Logtail插件解析日志。 日志服務會根據您選擇的采集模式生成默認的插件配置,您可以在默認配置后面添加其他插件配置,即您可以添加多個processors配置。更多信息,請參見概述。重要 打開啟用插件處理開關后,上傳原始日志、時區屬性、丟棄解析失敗日志、過濾器配置、接受部分字段(分隔符模式)等功能不可用。上傳原始日志 打開上傳原始日志開關后,原始日志將作為__raw__字段的值與解析過的日志一起上傳到日志服務。 Topic生成方式 設置Topic生成方式。更多信息,請參見日志主題。 - 空-不生成Topic:默認選項,表示設置Topic為空字符串,在查詢日志時不需要輸入Topic即可查詢。
- 機器組Topic屬性:設置為機器組Topic屬性,用于明確區分不同服務器產生的日志數據。
- 文件路徑正則:設置為文件路徑正則,則需要設置自定義正則,用正則表達式從路徑里提取一部分內容作為Topic。用于區分不同用戶或實例產生的日志數據。
日志文件編碼 設置日志文件編碼格式,取值為utf8、gbk。 時區屬性 采集日志時,日志時間的時區屬性。 - 機器時區:默認為Logtail所在主機或容器的時區。
- 自定義時區:手動選擇時區。
超時屬性 如果一個日志文件在指定時間內沒有任何更新,則認為監控已超時。 - 永不超時:持續監控所有日志文件,永不超時。
- 30分鐘超時:如果日志文件在30分鐘內沒有更新,則認為監控超時,Logtail不再監控該文件。
選擇30分鐘超時時,還需設置最大超時目錄深度,范圍為1~3。
過濾器配置 只采集符合過濾條件的日志,過濾條件包括key和Regex字段,分別為目標字段的名稱和用于過濾的正則表達式。各個過濾條件之間為與關系。 重要- 極簡模式下,只生成content字段。如果您要設置過濾條件,只能將Key設置為content。
- 此處的正則表達式僅支持全文匹配,不支持關鍵詞部分匹配。
相關示例如下:
- 過濾出符合條件的日志。
- 設置Key為level,Regex為WARNING|ERROR,表示只采集level字段值為WARNING或ERROR的日志。
- 設置Key為content,Regex為.*05\/Jan\/2023.*,表示只采集content字段值包含05/Jan/2023的日志。
- 過濾掉不符合條件的日志。
- 設置Key為level,Regex為^(?!.*(INFO|DEBUG)).*,表示不采集level字段值中包含INFO或DEBUG的日志。
- 設置Key為level,Regex為^(?!(INFO|DEBUG)$).*,表示不采集level字段值為INFO或DEBUG的日志。
- 設置Key為url,Regex為.*^(?!.*(healthcheck)).*,表示不采集url字段值中包含healthcheck的日志。
如何配置正則表達式,請參見正則表達式入門教程。
首次采集大小 通過首次采集大小,可以確認首次采集的新文件的內容位置。首次采集大小默認為1024 KB。 - 首次采集時,如果文件小于1024 KB,則從文件內容起始位置開始采集。
- 首次采集時,如果文件大于1024 KB,則從距離文件末尾1024 KB的位置開始采集。
您可以通過此處修改首次采集大小,取值范圍為0~10485760,單位為KB。
擴展配置 Logtail的擴展配置。更多信息,請參見advanced參數說明。 例如您要通過當前Logtail配置去采集其他Logtail配置已匹配的文件,并指定聚合發送周期,可添加如下配置。
{ "force_multiconfig": true, "batch_send_interval": 3 }
單擊下一步表示創建Logtail配置,日志服務開始采集日志。說明- Logtail配置生效時間最長需要3分鐘,請耐心等待。
- 如果遇到Logtail采集報錯,請參見如何查看Logtail采集錯誤信息、日志服務采集數據常見的錯誤類型。
- 預覽數據及創建索引,然后單擊下一步。日志服務默認開啟全文索引。您也可以根據采集到的日志,手動創建字段索引,或者單擊自動生成索引,日志服務將自動生成字段索引。更多信息,請參見創建索引。重要 如果您要查詢和分析日志,那么全文索引和字段索引必須至少啟用一種。同時啟用時,以字段索引為準。
- 單擊查詢日志,系統將跳轉至Logstore查詢分析頁面。您需要等待1分鐘左右,待索引生效后,才能在原始日志頁簽中,查看已采集到的日志。更多信息,請參見查詢和分析日志。
問題排查
使用Logtail采集日志后,如果預覽頁面或查詢頁面無數據,您可以參見Logtail采集日志失敗的排查思路進行排查。