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 外掛,可以應對各種場景。