全部產品
Search
文件中心

Simple Log Service:什麼是Logtail

更新時間:Nov 16, 2024

Logtail是Log Service提供的日誌採集Agent,用於採集阿里雲ECS、自建IDC或其他雲廠商等伺服器上的日誌。本文介紹Logtail的採集流程、功能、優勢、使用限制及配置流程等資訊。

採集流程

監聽日誌

在伺服器上安裝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啟動參數

功能優勢

  • 基於記錄檔,無侵入式採集日誌。您無需修改應用程式代碼,且採集日誌不會影響您的應用程式運行。

  • 除採集文本日誌外,還支援採集binlog、http資料、容器日誌等。

  • 支援Docker、Kubernetes叢集等容器叢集的資料擷取。

  • 穩定處理日誌採集過程中的各種異常。當遇到網路異常、服務端異常等問題時會採取主動重試、本機快取資料等措施保障資料安全。

  • 基於Log Service的集中管理能力。安裝Logtail後,只需要在Log Service上配置機器組、Logtail採集配置等資訊即可。

  • 完善的自我保護機制。為保證運行在伺服器上的Logtail不會明顯影響您伺服器上其他服務的效能,Logtail在CPU、記憶體及網路使用方面都做了嚴格的限制和保護機制。

配置流程

  1. 安裝Logtail

    如果ECS執行個體且與Simple Log ServiceProject屬於同一帳號且在同一地區,請參見安裝Logtail(ECS執行個體)。其他情況,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

  2. 配置使用者標識

    在採集非本帳號ECS、自建IDC或其他雲廠商伺服器日誌時需要配置使用者標識。

  3. 建立機器組

    Simple Log ServiceProject支援使用IP地址使用者自訂標識建立機器組。

  4. 建立Logtail採集配置

    您可以通過Log Service控制台設定精靈完成操作。具體操作,請參見採集文本日誌採集容器日誌

完成上述操作後,Logtail開始採集您伺服器上的日誌,並發送到對應的Logstore中。您可以通過Log Service控制台、API、SDK或CLI查詢日誌。

核心概念

  • 機器組:一個機器組包含一台或多台待採集同類日誌的伺服器。將Logtail採集配置應用到機器組後,Log Service會根據Logtail採集配置採集機器組內所有伺服器上的日誌。

    Log Service通過機器組管理所有需要通過Logtail採集日誌的伺服器,支援通過IP地址或者使用者自訂標識的方式定義機器組。您可以通過Log Service控制台管理機器組(包括建立、刪除機器組,添加、移除機器等操作)。 更多資訊,請參見什麼是機器組

  • Logtail:Log Service提供的日誌採集Agent,運行在待採集日誌的伺服器上。

    • Linux作業系統:Logtail安裝在/usr/local/ilogtail目錄下,啟動兩個以ilogtail開頭的獨立進程,一個為採集進程,另外一個為守護進程,程式作業記錄儲存在/usr/local/ilogtail/ilogtail.LOG檔案中。更多資訊,請參見安裝Logtail(Linux系統)

    • Windows作業系統

      • Logtail(32位程式)

        • 安裝在Windows 32位作業系統中時,對應的安裝目錄為C:\Program Files\Alibaba\Logtail

        • 安裝在Windows 64位作業系統中時,對應的安裝目錄為C:\Program Files (x86)\Alibaba\Logtail

          說明

          Windows 64位作業系統支援運行32/64位應用程式,但是出於相容性考慮,在Windows 64位作業系統上,Windows會使用單獨的x86目錄來存放32位應用程式。

      • Logtail(64位程式)

        只支援安裝在Windows 64位作業系統中,對應的安裝目錄為C:\Program Files\Alibaba\Logtail

      您可以通過控制台 > 管理工具 > 服務,查看LogtailDaemon服務(Logtail 1.0.0.0及以上版本)或LogtailWorker服務(Logtail 0.x.x.x版本),確認Logtail的運行狀態。程式作業記錄儲存在安裝目錄下的 ilogtail.LOG檔案中。更多資訊,請參見安裝Logtail(Windows系統)

  • Logtail配置:Logtail採集日誌的策略集合。通過在建立Logtail採集配置時設定資料來源、採集模式等參數,實現定製化的採集策略。Logtail採集配置定義了如何在伺服器上採集同類日誌並解析、發送到指定的Log ServiceLogstore上。

準系統

功能

說明

即時採集日誌

動態監控記錄檔,即時讀取、解析增量日誌。日誌從產生到發送到Log Service的延遲一般在3秒內。更多資訊,請參見Logtail採集詳情

說明

Logtail不支援採集歷史日誌,對於一條日誌,讀取該日誌的時間減去日誌中記錄的時間,差值超過12小時會被丟棄。如果您要採集歷史記錄檔,請參見匯入歷史記錄檔

自動處理日誌輪轉

很多應用會按照檔案大小或者日期對記錄檔進行輪轉(rotation),把原記錄檔重新命名,並建立一個空記錄檔等待寫入。例如:app.LOG檔案,通過日誌輪轉會產生 app.LOG.1app.LOG.2 等。您可以指定採集日誌寫入的檔案,如app.LOG,Logtail會自動檢測到日誌輪轉過程,保證這個過程中不會丟失日誌資料。

多種採集輸入源

Logtail除支援採集文本日誌外,還支援syslog、http、MySQL binlog等資料來源。更多資訊,請參見資料擷取概述

相容開源採集Agent

Logtail支援Logstash、Beats等開源軟體採集的資料作為資料來源。更多資訊,請參見資料擷取概述

自動處理採集異常

因為服務端錯誤、網路措施、配額超限等各種異常導致資料發送失敗,Logtail會按情境主動重試。如果重試失敗則將資料寫入本機快取,等待3秒自動重發。更多資訊,請參見如何使用Logtail自動診斷工具

靈活配置採集策略

可以通過Logtail採集配置非常靈活地採集日誌。您可以根據實際情境指定日誌目錄和檔案,支援精確匹配,也支援萬用字元模糊比對。您也可以自訂提取日誌的方式和提取欄位的名稱,Log Service支援通過Regex提取日誌。

由於Log Service中的日誌資料模型要求每條日誌必須有精確的時間戳記資訊,Logtail提供了自訂的日誌時間格式,方便您從不同格式的日誌資料中提取必要的日誌時間戳記資訊。

自動同步Logtail採集配置

您在Log Service控制台上建立或更新Logtail採集配置,一般情況下,Logtail在3分鐘內即可接收並生效。更新過程中不會丟失日誌資料。

自我監控狀態

Logtail會即時監控自身CPU和記憶體消耗,避免Logtail消耗您太多資源而影響您的其他服務。Logtail在運行過程中,如果資源使用超出限制將會自動重啟,避免影響伺服器上的其他服務。同時,Logtail有主動的網路限流保護措施,防止過度消耗頻寬。更多資訊,請參見啟動參數設定檔(ilogtail_config.json)

簽名資料發送

為保證您的資料在發送過程中不會被篡改,Logtail會通過可信通道從服務端擷取私密Token,並對所有發送日誌的資料包進行資料簽名。

說明

Logtail在擷取私密Token時採用HTTPS通道,保障相關安全性。

資料擷取可靠性

Logtail在採集日誌時,定期將採集的點位(CheckPoint)資訊儲存到本地,如果遇到伺服器意外關閉、進程崩潰等異常情況時,Logtail重啟後會從上一次記錄的位置開始採集資料,儘可能保證資料不丟失。Logtail會根據啟動參數設定檔中配置進行工作,如果資源佔用超過限定值5分鐘以上,則Logtail會強制重啟。重啟後可能會產生一定的資料重複。

Logtail內部採用了很多機制提升日誌採集可靠性,但並不能保證日誌一定不會丟失。以下情況可能造成日誌丟失:

  • Logtail未運行且日誌輪轉多次。

  • 日誌輪轉速度極快,例如1秒輪轉1次。

  • 日誌採集速度長期無法達到日誌產生速度。

相關文檔