"本文主要對fluent-bit特性及使用場景介紹"
1、簡介
fluent-bit是一種在Linux,OSX和BSD系列操作系統運行,兼具快速、輕量級日誌處理器和轉發器。它非常注重性能,通過簡單的途徑從不同來源收集日誌事件。
2、功能
fluent-bit是一個開源的、多平臺的、旨在成爲像一把瑞士軍刀一樣進行日誌收集和轉發。它爲我們提供一個終端到終端的解決方案,收集,存儲和分析的基礎架構。fluent-bit是此管道中是不可或缺的一部分,它可以解決日誌收集需求。作爲一個開源項目,它已被廣泛採用,fluent-bit能夠勝任和解決docker和Kubernetes等關鍵組件的雲服務日誌記錄需求。
3、fluent-bit工作原理
fluent-bit是一個簡單日誌收集工具,上圖就是對它工作流程的全局概述,它通過輸入、轉換、過濾、緩衝、路由到輸出而完成日誌的收集。
4、爲什麼使用fluent-bit
如今,我們環境中的信息源數量正在不斷增加,數據收集和日誌轉發很困難,大規模處理數據收集非常複雜,並且收集和彙總各種數據需要一個專門的工具來處理:
不同的信息來源。
不同的數據格式。
多個目的地。
fluent-bit出於滿足對高性能的需求和優化工具,它可以從任何輸入源收集數據,統一的數據並將其發送到多個目的地而且支持delimiter、key-value、json等主流格式。比如我們常見的logstash耗費資源嚴重,filebeat可以作爲輕量級日誌收集工具,目前只能對接對接到ES、logstash、kafaka、redis而且對數據處理能力有限必須配合大數據平臺使用(具體查看:Kubernetes日誌收集解決方案)。fluent-bit兼具filebeat的功能,但是filebeat不具備fluent-bit數據處理和路由轉發能力,如果我只想簡單收集日誌,filebeat不能滿足,具體請查看:Kubernetes集羣環境下fluentd日誌收集方案介紹
5、fluentd和fluent-bit的關係及特性
日誌收集場景和需求是多變的,爲了滿足日誌收集的靈活性,我們會根據需求選擇不同的插件,比如:ELK常見解決方案Kubernetes日誌收集解決方案,當前我們主要介紹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也可以獨立完成日誌收集。
6、fluent-bit支持平臺
操作系統 | 平臺 | cpu架構 |
Linux | Centos 7 | x86_64 |
Debian 8 (Jessie) | x86_64 | |
Debian 9 (Stretch) | x86_64 | |
Raspbian 8 (Debian Jessie) | AArch32 | |
Raspbian 9 (Debian Stretch) | AArch32 | |
Ubuntu 16.04 (Xenial Xerus) | x86_64 | |
Ubuntu 18.04 (Bionic Beaver) | x86_64 |
從體系結構支持的角度來看,fluent-bit在基於x86,x86_64,AArch32和AArch64的處理器上具有全部功能。fluent-bit也可以在OSX和*BSD系統上工作,但並非所有插件在所有平臺上都可用。官方支持將根據社區需求而擴大。
7、下載地址及參考文檔
http://fluentbit.io/download/
https://docs.fluentbit.io/manual/
8、安裝及使用方法
9、總結
本文主要介紹了fluent-bit特性及功能,接下來我會分爲三遍文章進行分享,分別是fluent-bit在docker和Kubernetes中的使用、fluent-bit插件使用和指令介紹、fluentd和fluent-bit在線上環境的使用,敬請關注。
推薦閱讀:
Kubernetes中如何使用ClusterDNS進行服務發現?
從Ice到Kubernetes容器技術,微服務架構經歷了什麼?
原創不易,隨手關注或者”在看“,誠摯感謝!