1. 程式人生 > 其它 >Kubernetes日誌採集——Fluent Bit簡介(一)

Kubernetes日誌採集——Fluent Bit簡介(一)

1、概述

1.1 簡介

Fluent Bit 是一個開源的日誌處理器和轉發器,它可以從不同來源收集任何資料,如指標和日誌,用過濾器處理它們並將它們傳送到多個目的地。它是 Kubernetes 等容器化環境的首選。

Fluent Bit 的設計考慮到了效能:高吞吐量、低 CPU 和記憶體使用率。它是用 C 語言編寫的,具有可插拔架構,支援 70 多種輸入、過濾器和輸出擴充套件。

1.2 特點

 1. 特點
   ①事件驅動:使用非同步操作來收集和傳送資料;
   ②路由:資料通過外掛會被打上tag,可以控制資料發往一個或多個目的地;
   ③I/O處理: 在Input/Output層提供一個抽象,以非同步方式執行讀寫;
   ④upstream manager:
   ⑤安全:通過TLS提供安全傳輸

 2. 突出亮點
   ①:輕量級、高效能
   ②:可擴充套件
   ③:收集系統資訊

1.3 fluentd和fluent-bit的關係及特性

fluentd和fluent-bit都是有Treasure Data公司贊助開發的開源專案,目標是解決日誌收集、處理和轉發。這兩個專案有很多相似之處,fluent-bit完全基於Fluentd體系結構和設計經驗。從體系結構的角度來看,選擇使用哪個取決於使用場景,我們可以考慮:

  • Fluentd是日誌收集器,處理器和聚合器。
  • fluent-bit是一個日誌收集器和處理器(它沒有Fluentd等強大的聚合功能)。

fluentd

fluent-bit

範圍

容器/伺服器

容器/伺服器

語言

C和Ruby

C

大小

約40MB

約450KB

效能

高效能

高效能

依賴關係

作為Ruby Gem構建,主要依賴gems

除了一些安裝編譯外掛(GCC、CMAKE)其它零依賴。

外掛支援

超過650個可用外掛

大約35個可用外掛

許可證

Apache許可證2.0版

Apache許可證2.0版

根據兩個元件不同特點可以考慮將Fluentd主要用作聚合器,將fluent-bit作為日誌轉發器,兩個專案相互補充,從而提供了完整的可靠輕量級日誌解決方案,當然fluent-bit也可以獨立完成日誌收集。

1.4 fluent-bit支援平臺

從體系結構支援的角度來看,fluent-bit在基於x86,x86_64,AArch32和AArch64的處理器上具有全部功能。fluent-bit也可以在OSX和*BSD系統上工作,但並非所有外掛在所有平臺上都可用。官方支援將根據社群需求而擴大。

2、fluent-bit工作原理

日誌通過資料管道從資料來源傳送到目的地,一個數據管道通常由 Input、Parser、Filter、Buffer、Routing 和 Output組成。

  • Input:用於從資料來源抽取資料,一個數據管道中可以包含多個 Input。
  • Parser:負責將 Input 抽取的非結構化資料轉化為標準的結構化資料,每個 Input 均可以定義自己的 Parser。
  • Filter:負責對格式化資料進行過濾和修改。一個數據管道中可以包含多個 Filter,Filter 會順序執行,其執行順序與配置檔案中的順序一致。
  • Buffer:使用者快取經過 Filter 處理的資料。
  • Routing:將 Buffer 中快取的資料路由到不同的 Output。
  • Output:負責將資料傳送到不同的目的地,一個數據管道中可以包含多個 Output。

Fluent Bit 支援多種型別的 Input、Parser、Filter、Output 外掛,可以應對各種場景。