全部產品
Search
文件中心

Simple Log Service:Logtail採集詳情

更新時間:Jun 30, 2024

本文介紹Logtail的採集過程,包括監聽日誌、讀取日誌、處理日誌、過濾日誌、彙總日誌和發送日誌。

採集過程

Logtail採集資料的過程如下:

  1. 監聽日誌

  2. 讀取日誌

  3. 處理日誌

  4. 過濾日誌

  5. 彙總日誌

  6. 發送日誌

監聽日誌

在伺服器上安裝Logtail及在Log Service控制台上建立Logtail採集配置後,Log Service會即時下發Logtail採集配置到Logtail,Logtail根據Logtail採集配置開始監聽檔案。Logtail根據Logtail採集配置中的日誌路徑和最大監控目錄深度,逐層掃描符合規則的日誌目錄和檔案。

將Logtail採集配置應用到機器組後,對應伺服器上沒有發生修改事件的記錄檔會被判定為歷史記錄檔,Logtail監聽到歷史記錄檔,並不會採集。當記錄檔產生了修改事件,才會觸發採集流程,Logtail開始讀取檔案。如果您要採集歷史記錄檔,請參見匯入歷史記錄檔

為保證採集日誌的時效性以及穩定性,Logtail會對待採集的目錄註冊事件監聽(Linux下使用Inotify)以及定期輪詢。

讀取日誌

Logtail監聽到記錄檔,並確認有更新後,開始讀取。

  • 首次讀取記錄檔時,Log Service預設首次讀取大小為1024 KB。

    • 如果檔案小於1024 KB,則從檔案內容起始位置開始讀取。

    • 如果檔案大於1024 KB,則從距離檔案末尾1024 KB的位置開始讀取。

    說明

    Log Service支援自訂首次讀取大小。

    • 控制台方式:在Logtail配置中修改首次採集大小參數。具體操作,請參見進階配置

    • API方式:在Logtail配置中修改tail_size_kb參數。具體操作,請參見advanced參數說明

  • 如果Logtail已讀取過該記錄檔,則從上次讀取的Checkpoint處繼續讀取。

  • 讀取記錄檔時,每次最多可以讀取512 KB,因此每條日誌的大小請控制在512 KB以內,否則無法正常讀取。

說明

如果您修改了伺服器上的時間,請手動重啟Logtail,否則會導致日誌時間不正確、意外丟棄日誌等現象。

處理日誌

Logtail讀取日誌後,對日誌內容進行分行、解析、設定時間欄位。

  • 分行

    如果Logtail採集配置中指定了行首Regex,則Logtail根據行首Regex對每次讀取的日誌進行分行,切分成多條日誌;如果沒有指定行首Regex,則將一行日誌作為一條Tlog。

  • 解析

    根據Logtail採集配置中配置的採集模式,對每條日誌內容進行解析。

    說明

    如果您的Regex比較複雜,可能會導致CPU佔用率過高,請使用合理高效的Regex。

    如果解析失敗,會根據Logtail採集配置中是否開啟丟棄解析失敗日誌的功能進行處理。

    • 開啟丟棄解析失敗日誌,則直接丟棄該日誌,並上報解析失敗的報錯資訊。

    • 關閉丟棄解析失敗日誌,則上傳解析失敗的原始日誌,其中Key為raw_log、Value為日誌內容。

  • 設定日誌時間欄位

    • 如果未配置時間欄位,則日誌時間為當前解析日誌的時間。

    • 如果配置了時間欄位:

      • 日誌中記錄的時間距離目前時間12小時以內,則從解析的日誌欄位中提取時間。

      • 日誌中記錄的時間距離目前時間12小時以上,則丟棄該日誌並上傳錯誤資訊。

過濾日誌

處理日誌後,根據Logtail採集配置中的過濾器配置過濾日誌。

  • 在Logtail採集配置中未設定過濾器配置,則不過濾日誌,執行下一個步驟。

  • Logtail採集配置已設定過濾器配置,則對每條日誌中的所有欄位進行遍曆並驗證。

    只有符合過濾器配置的日誌被採集。

彙總日誌

為降低網路請求次數,在Tlog、過濾完畢後,會在Logtail內部緩衝一段時間後進行彙總打包,再發送到Log Service。快取資料後,觸發打包日誌發送到Log Service的條件如下:

  • 日誌彙總時間超過3秒。

  • 日誌彙總條數超過4000條。

  • 日誌彙總總大小超過512 KB。

發送日誌

Logtail將採集到的日誌彙總並發送到Log Service。如果資料發送失敗,Logtail自動根據錯誤資訊決定重試或放棄發送。

錯誤資訊

說明

Logtail處理方式

401錯誤

當前帳號沒有許可權採集資料。為該帳號授予資料接入相關許可權。具體操作,請參見配置許可權助手

直接丟棄日誌包。

404錯誤

Logtail採集配置中指定的Project或Logstore不存在。

直接丟棄日誌包。

403錯誤

Shard Quota超出限制。

等待3秒後重試。

500錯誤

服務端異常。

等待3秒後重試。

說明

如果要調整資料的發送速度和最大並發數,您可以設定啟動參數設定檔中的max_bytes_per_sec參數和send_request_concurrency參數。具體操作,請參見設定Logtail啟動參數