溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Logtail的工作原理是什么

發(fā)布時間:2021-12-03 10:36:59 來源:億速云 閱讀:147 作者:柒染 欄目:云計算

Logtail的工作原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

Logtail數(shù)據(jù)采集原理介紹,包括文件采集原理以及插件采集原理。

文件采集原理

Logtail文件采集的流程包括:文件監(jiān)聽、文件讀取、日志處理、日志過濾、日志聚合和數(shù)據(jù)發(fā)送6個環(huán)節(jié)。下面將分別進行介紹:


Logtail的工作原理是什么

  • 注意:本節(jié)只介紹正常運行模式中Logtail的文件采集原理,該模式下不支持采集歷史文件,如有采集歷史文件需求,請參考采集歷史文件。

Logtail的工作原理是什么

文件監(jiān)聽

  1. 當(dāng)Logtail獲取到采集配置后,根據(jù)配置的日志路徑、文件名、最大監(jiān)控目錄深度遞歸掃描目錄下符合文件名規(guī)則的日志目錄和文件。

  2. 為保證日志采集時效性以及穩(wěn)定性,Logtail會對采集目錄注冊事件監(jiān)聽(Linux下Inotify、Windows下使用ReadDirectoryChangesW)以及定期輪詢。

  3. 當(dāng)?shù)谝淮螒?yīng)用配置時,對于目錄下存量的日志文件不會進行采集,直到文件在配置應(yīng)用后產(chǎn)生修改事件才會采集。

  4. 當(dāng)監(jiān)聽到文件修改后,會進入文件讀取環(huán)節(jié)。

文件讀取

  1. 每次Logtail讀取會從該文件上一次讀取的偏移處開始。

  2. 若該文件首次讀取,會檢查該文件大小,若文件小于1MB,則從文件頭開始讀取,否則從文件尾1MB處開始讀取。

  3. 每次讀取最多512KB數(shù)據(jù),因此一條日志最大支持512KB。

日志處理

  1. 對于讀取的數(shù)據(jù)塊,會根據(jù)行首配置進行分行,切分成多條日志。

  2. 對于每條日志內(nèi)容執(zhí)行對應(yīng)的解析,例如正則、分隔符、JSON等。

  3. 若未配置時間字段,則日志時間為當(dāng)前解析時間;若配置了時間提取字段,則從解析的日志字段中提取時間,若時間距離當(dāng)前時間超過12小時,則丟棄該日志并上傳錯誤信息。

  4. 若該日志可以被正確解析,則進入日志過濾環(huán)節(jié)。

  5. 若該日志解析失敗且開啟 高級配置中的丟棄解析失敗日志,則直接丟棄該日志,并上報解析失敗的報錯信息

  6. 若該日志解析失敗,但未開啟 高級配置中的丟棄解析失敗日志,則將解析失敗的原始日志上傳,其中Key為__raw_log__、Value為日志內(nèi)容

日志過濾

  1. 若用戶未設(shè)置 高級配置 中的 過濾器配置,則跳過日志過濾環(huán)節(jié)。

  2. 若用戶已經(jīng)設(shè)置過濾器配置,則會對每條日志中的所有字段進行遍歷并驗證。

  3. 只有過濾器中配置的所有字段都在該日志出現(xiàn),且所有對應(yīng)的字段全部符合過濾器配置時,日志才會被采集,否則丟棄該日志。

日志聚合

  1. 為降低網(wǎng)絡(luò)請求次數(shù),當(dāng)日志處理、過濾完畢后,會在Logtail內(nèi)部緩存一段時間再進行發(fā)送。

  2. 緩存規(guī)則有3條,任一一條滿足則觸發(fā)發(fā)送:

    1. 日志聚合時間超過3秒

    2. 日志聚合條數(shù)超過4096條

    3. 日志聚合總大小超過1MB

日志發(fā)送

  1. 日志發(fā)送前會進行壓縮,目前Logtail采用的是LZ4壓縮算法。

  2. 日志發(fā)送受限于max_bytes_per_secsend_request_concurrency 限制,Logtail會保證發(fā)送速率以及并發(fā)不超過配置值,具體參數(shù)請參考啟動參數(shù)配置。

  3. 若數(shù)據(jù)發(fā)送失敗,則根據(jù)錯誤信息選擇重試還是丟棄數(shù)據(jù):

    1. 401錯誤,說明沒有權(quán)限采集數(shù)據(jù),直接丟棄。

    2. 404錯誤,說明project或logstore不存在,直接丟棄。

    3. 403錯誤,Quota超限,等待3秒后重試。

    4. 500錯誤,等待3秒后重試。

    5. 網(wǎng)絡(luò)超時,等待3秒后重試。

插件采集原理

Logtail的插件采集流程主要包括以下環(huán)節(jié):插件數(shù)據(jù)采集、數(shù)據(jù)處理、日志聚合和日志發(fā)送。

插件數(shù)據(jù)采集

插件數(shù)據(jù)采集的原理在每個插件的文檔中都有介紹,具體請參見各個插件的幫助文檔。

image.png

數(shù)據(jù)處理

插件數(shù)據(jù)處理邏輯請參考插件-數(shù)據(jù)處理。

日志聚合

插件的日志聚合邏輯和文件采集的日志聚合邏輯一致。

日志發(fā)送

插件的日志發(fā)送邏輯和文件采集的日志發(fā)送邏輯一致。

資源限制

Logtail會根據(jù)配置文件中的資源限制進行工作,若資源占用長時間(5分鐘)超過限定值,則Logtail會進行強制重啟。重啟后可能會產(chǎn)生一定的數(shù)據(jù)重復(fù)。

數(shù)據(jù)采集可靠性

Logtail在采集數(shù)據(jù)時,會定期將采集的點位(CheckPoint)信息保存到本地,若遇到宕機、Crash等異常時,Logtail再次啟動會從上一次記錄的位置處開始采集數(shù)據(jù),盡可能保證數(shù)據(jù)不丟失。

Logtail內(nèi)部采用了很多機制提升日志采集可靠性,但并不能保證日志絕對不會丟失。以下情況可能造成日志丟失:

  1. Logtail未運行且日志輪轉(zhuǎn)多次。

  2. 日志輪轉(zhuǎn)速度極快,例如1秒輪轉(zhuǎn)1次。

  3. 日志采集速度長期無法達到日志產(chǎn)生速度。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI