
官方文檔永遠(yuǎn)是標(biāo)準(zhǔn)答案但真正把 Fluent Bit 裝到一臺(tái) Linux 生產(chǎn)服務(wù)器上往往比“跑三條命令”要曲折得多。倉(cāng)庫(kù)源配置、版本選擇、編譯開(kāi)關(guān)、系統(tǒng)目錄權(quán)限、插件缺失這些細(xì)節(jié)在文檔主頁(yè)上只是幾個(gè)鏈接在實(shí)際操作中卻要花掉不少時(shí)間。這篇筆記就從安裝環(huán)節(jié)開(kāi)始按我實(shí)操的順序把過(guò)程、坑和驗(yàn)證方法都梳理一遍適合第一次接觸 Fluent Bit、準(zhǔn)備在 Linux 上正式部署日志采集的同學(xué)。已經(jīng)用過(guò)的朋友也可以對(duì)照看看有沒(méi)有踩到同樣的問(wèn)題。1. 安裝之前先搞清楚 Fluent Bit 在日志鏈路里的位置不少人是被 “輕量級(jí)日志采集器” 這幾個(gè)字吸引來(lái)的但輕量是有前提的得先弄明白它在整個(gè)數(shù)據(jù)鏈路里扮演什么角色才好在安裝階段就避免方向性錯(cuò)誤。1.1 它和 Fluentd 到底什么關(guān)系Fluent Bit 和 Fluentd 屬于同一個(gè)開(kāi)源生態(tài)解決的是同一類(lèi)問(wèn)題收集分散在服務(wù)器、容器、設(shè)備上的日志經(jīng)過(guò)解析、過(guò)濾、加工之后發(fā)送到后端的存儲(chǔ)或分析系統(tǒng)。兩者的定位差異很大。Fluentd 更像一個(gè)全功能的數(shù)據(jù)路由中樞內(nèi)存占用通常在幾百 MB適合承擔(dān)匯聚節(jié)點(diǎn)的角色。Fluent Bit 則被設(shè)計(jì)成一種嵌入式優(yōu)先的采集端用 C 語(yǔ)言編寫(xiě)核心運(yùn)行時(shí)非常克制在常規(guī) Linux 服務(wù)器上基礎(chǔ)內(nèi)存占用可以控制在幾十 MB 以內(nèi)CPU 占用也遠(yuǎn)低于同類(lèi)工具。同一個(gè)生態(tài)里二者各司其職Fluent Bit 部署在數(shù)據(jù)產(chǎn)生的源頭每臺(tái)機(jī)器、每個(gè)容器Fluentd 部署在匯聚節(jié)點(diǎn)或者直接用 Fluent Bit 把數(shù)據(jù)發(fā)到對(duì)象存儲(chǔ)、Kafka、ES 這類(lèi)目的地。理解了這一點(diǎn)就不會(huì)在安裝時(shí)糾結(jié)“到底用 Fluentd 還是 Fluent Bit”。源頭采集用 Fluent Bit復(fù)雜路由和跨系統(tǒng)轉(zhuǎn)發(fā)用 Fluentd。邊車(chē)容器里跑的通常也是 Fluent Bit因?yàn)樗銐蛐 ?.2 和其他采集器橫向?qū)Ρ菷ilebeat、Vector、Promtail 都是這個(gè)領(lǐng)域的常見(jiàn)名字。Fluent Bit 的核心優(yōu)勢(shì)不在某一個(gè)單一性能指標(biāo)而在于它把“采集 解析 過(guò)濾 輸出”整合在了一個(gè)二進(jìn)制里插件系統(tǒng)一致配置文件風(fēng)格統(tǒng)一。同一套配置語(yǔ)法在工作站和嵌入式設(shè)備上都能用對(duì)小團(tuán)隊(duì)來(lái)說(shuō)學(xué)習(xí)成本低維護(hù)路徑短。內(nèi)存上Filebeat 通常也控制得不錯(cuò)但插件生態(tài)相對(duì)封閉擴(kuò)展方式有限。Vector 性能強(qiáng)配置風(fēng)格現(xiàn)代但同樣場(chǎng)景下二進(jìn)制體積和內(nèi)存占用往往比 Fluent Bit 大一個(gè)量級(jí)。Fluent Bit 的短板也很明確不是所有插件都具備企業(yè)級(jí)成熟度部分插件遇到異常數(shù)據(jù)流時(shí)的表現(xiàn)需要提前壓測(cè)。1.3 資源占用和編譯選項(xiàng)的關(guān)系官方文檔強(qiáng)調(diào)的“輕量”很大程度上依賴編譯時(shí)的裁剪。官方提供的二進(jìn)制包默認(rèn)開(kāi)啟一組常用插件已經(jīng)能滿足大多數(shù)場(chǎng)景。但如果需要自編譯要清楚一個(gè)原則每開(kāi)啟一個(gè)插件都會(huì)增加運(yùn)行時(shí)的內(nèi)存占用和二進(jìn)制體積。某些插件背后依賴的庫(kù)如 OpenSSL、JEMalloc也會(huì)在啟動(dòng)時(shí)初始化相關(guān)線程池輕則拉高啟動(dòng)時(shí)間重則讓嵌入式環(huán)境的內(nèi)存預(yù)算直接超限。所以安裝前要評(píng)估的是我要采集什么tail、syslog、journald解析什么JSON、正則、多行發(fā)到哪里stdout、Kafka、S3、ES。列出清單再去選擇和剪裁插件而不是把官方默認(rèn)構(gòu)建直接搬上生產(chǎn)機(jī)。1.4 版本策略別把滾動(dòng)版本當(dāng)生產(chǎn)版本Fluent Bit 的版本號(hào)一般遵循主版本.次版本.補(bǔ)丁版本的節(jié)奏官方文檔會(huì)提供常規(guī)發(fā)布版和長(zhǎng)期支持版本的說(shuō)明。生產(chǎn)環(huán)境建議鎖定長(zhǎng)期支持版本并固定小版本號(hào)。這里有個(gè)實(shí)際教訓(xùn)某次我圖省事直接裝了最新大版本配置里用的 input 插件和舊版差別不大但 output 模塊對(duì) TLS 參數(shù)的處理方式變了導(dǎo)致后端連接頻繁斷開(kāi)。排查了很久才發(fā)現(xiàn)回退版本后問(wèn)題消失。日志采集這種基礎(chǔ)設(shè)施不在大版本發(fā)布初期就引入生產(chǎn)是基本紀(jì)律。2. 用包管理器安裝最快路徑但藏著版本和倉(cāng)庫(kù)的坑大多數(shù) Linux 用戶的第一反應(yīng)是“用系統(tǒng)包管理器裝”。這沒(méi)錯(cuò)但官方倉(cāng)庫(kù)配置和發(fā)行版自帶倉(cāng)庫(kù)是兩個(gè)概念混用會(huì)踩到版本不一致的坑。2.1 為什么優(yōu)先選官方倉(cāng)庫(kù)發(fā)行版自帶的軟件源里通常也有 Fluent Bit 的包但版本落后很常見(jiàn)甚至可能停留在老幾個(gè)大版本之前。對(duì)日志采集器來(lái)說(shuō)版本落后意味著缺少上游修復(fù)的崩潰問(wèn)題、解析器 bug以及與新版輸出插件的兼容性補(bǔ)丁。官方推薦的做法是先添加 Fluent Bit 官方倉(cāng)庫(kù)再安裝。這個(gè)流程本質(zhì)上是在系統(tǒng)包管理器的源列表里增加一個(gè)可信目錄并同步導(dǎo)入對(duì)應(yīng)的 GPG 簽名密鑰確保下載的二進(jìn)制包沒(méi)有被篡改。不要跳過(guò)密鑰導(dǎo)入那一步否則安裝時(shí)會(huì)出現(xiàn)簽名驗(yàn)證失敗或者更隱蔽的源不可信警告。2.2 Ubuntu / Debian 系列的具體操作以 Ubuntu 為代表的 Debian 系系統(tǒng)安裝流程大致是更新依賴、安裝 curl、導(dǎo)入簽名密鑰、添加源列表、更新緩存、安裝。apt-get update apt-get install -y curl curl -fsSL https://packages.fluentbit.io/fluentbit.key | gpg --dearmor -o /etc/apt/keyrings/fluentbit-keyring.gpg echo deb [signed-by/etc/apt/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/jammy jammy main /etc/apt/sources.list.d/fluent-bit.list apt-get update apt-get install -y fluent-bit這里注意兩個(gè)細(xì)節(jié)。第一Keyrings 路徑。較新版本的 Debian/Ubuntu 規(guī)范做法是把 GPG 公鑰放到/etc/apt/keyrings/目錄然后在源文件里用signed-by顯式指定。老文章里常見(jiàn)的是直接把 key 追加到 apt 的信任列表這種做法的風(fēng)險(xiǎn)是信任范圍擴(kuò)大不建議沿用。第二發(fā)行版代號(hào)。上面示例里是jammy對(duì)應(yīng) Ubuntu 22.04。不同版本要換成對(duì)應(yīng)的代號(hào)focal20.04、noble24.04、Debian 的bookworm、bullseye等。填錯(cuò)代號(hào)會(huì)導(dǎo)致 apt 更新時(shí) 404安裝永遠(yuǎn)不成功。2.3 RHEL / CentOS 系列配置與版本鎖CentOS、Rocky Linux、AlmaLinux 這類(lèi)紅帽系系統(tǒng)走的是 yum/dnf 路線。官方倉(cāng)庫(kù)使用名為 fluent-bit.repo 的配置文件。cat /etc/yum.repos.d/fluentbit.repo EOF [fluent-bit] nameFluent Bit baseurlhttps://packages.fluentbit.io/centos/\$releasever/ gpgcheck1 gpgkeyhttps://packages.fluentbit.io/fluentbit.key enabled1 EOF dnf install -y fluent-bit\$releasever變量會(huì)自動(dòng)解析成系統(tǒng)的主版本號(hào)這個(gè)設(shè)計(jì)本身很巧妙但如果機(jī)器上同時(shí)配置了多個(gè)帶通配規(guī)則的倉(cāng)庫(kù)可能出現(xiàn)包解析順序問(wèn)題。穩(wěn)妥起見(jiàn)安裝時(shí)可以顯式指定版本號(hào)dnf install -y fluent-bit-2.1.10紅帽系系統(tǒng)里另一個(gè)常見(jiàn)問(wèn)題是包名偶爾帶后綴。有人用yum search fluent搜到td-agent-bit這是 Fluent Bit 更早期的名稱(chēng)現(xiàn)在基本統(tǒng)一為fluent-bit??吹嚼辖坛套屇阊btd-agent-bit時(shí)先確認(rèn)是不是版本太老。2.4 Alpine Linux靜態(tài)鏈接與 musl 的相容性問(wèn)題Alpine 的包管理器 apk 用起來(lái)最簡(jiǎn)單一條命令就能裝完apk add fluent-bit但 Alpine 使用的是 musl C 庫(kù)官方針對(duì) Alpine 發(fā)布的安裝包通常也會(huì)進(jìn)行適配。我個(gè)人的建議是如果是 Docker 鏡像基于 Alpine直接用官方鏡像更省心如果是裸機(jī)跑 Alpine裝系統(tǒng)包即可。需要特別留意的是如果走源碼編譯路線編譯時(shí)的 C 庫(kù)必須與運(yùn)行時(shí)一致否則會(huì)出現(xiàn) DLL 找不到或段錯(cuò)誤。2.5 包管理器安裝后的 systemd 集成官方 RPM 和 deb 包安裝完成后一般會(huì)自動(dòng)注冊(cè) systemd 服務(wù)。systemctl status fluent-bit能直接看到服務(wù)狀態(tài)。如果沒(méi)有自動(dòng)注冊(cè)或者你是手動(dòng)放置二進(jìn)制需要自己寫(xiě)一個(gè)簡(jiǎn)單的 unit 文件。[Unit] DescriptionFluent Bit Afternetwork-online.target Wantsnetwork-online.target [Service] ExecStart/usr/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.conf Restarton-failure RestartSec5 LimitNOFILE65535 [Install] WantedBymulti-user.targetLimitNOFILE值得調(diào)高。日志采集器需要同時(shí)打開(kāi)大量文件描述符tail 插件跟蹤的每個(gè)文件都占一個(gè)默認(rèn) 1024 在高并發(fā)場(chǎng)景下很快耗盡。服務(wù)啟動(dòng)后通過(guò)journalctl -u fluent-bit查看運(yùn)行日志這一步不能省。3. 不依賴包管理器靜態(tài)二進(jìn)制與源碼編譯安裝包管理器不是所有場(chǎng)景的最優(yōu)解。離線內(nèi)網(wǎng)環(huán)境、自定義目錄安裝、特殊編譯需求這些時(shí)候需要用別的安裝方式。雖然 Fluent Bit 也提供容器鏡像方式有的項(xiàng)目會(huì)以 sidecar 模式部署但這里只展開(kāi)二進(jìn)制包和源碼兩個(gè)方向。3.1 靜態(tài)二進(jìn)制包離線環(huán)境的好幫手官方為多種架構(gòu)提供了預(yù)編譯的靜態(tài)二進(jìn)制包下載后解壓即可運(yùn)行不需要安裝依賴也不需要 root 權(quán)限。優(yōu)點(diǎn)是部署速度快缺點(diǎn)是二進(jìn)制較大且內(nèi)置的插件集合固定。wget https://packages.fluentbit.io/linux/amd64/fluent-bit-2.1.10.tar.gz tar zxf fluent-bit-2.1.10.tar.gz cd fluent-bit-2.1.10 ./bin/fluent-bit -v解壓后典型的目錄結(jié)構(gòu)是bin/和conf/。conf/里是默認(rèn)配置文件里面有一份fluent-bit.conf和若干 parser 配置文件可以直接改成自己的配置。離線環(huán)境一定要提前想清楚插件完整性因?yàn)殪o態(tài)包無(wú)法臨時(shí)加插件。常見(jiàn)操作是把bin/目錄整個(gè)拷到目標(biāo)機(jī)器的/opt/fluent-bit/下再用 systemd unit 指向這個(gè)路徑。這樣即使系統(tǒng)包管理器里沒(méi)有 Fluent Bit也能完成部署。3.2 源碼編譯何時(shí)才真正需要源碼編譯最典型的需求有兩個(gè)一是嵌入自定義插件、私有 Filter二是構(gòu)建最小化二進(jìn)制也就是只保留要用的插件。這里只給最小步驟框架實(shí)際編譯前建議先安裝cmake、gcc、make和 libc 開(kāi)發(fā)頭文件:git clone https://github.com/fluent/fluent-bit.git cd fluent-bit git checkout v2.1.10 cmake -DFLB_RELEASEOn \ -DFLB_INPUT_TAILOn \ -DFLB_OUTPUT_STDOUTOn \ -DFLB_OUTPUT_KAFKAOn \ -DFLB_FILTER_PARSEROn \ -DFLB_TLSOff \ -B build cmake --build build關(guān)鍵點(diǎn)是-DFLB_*開(kāi)關(guān)。如果只想做最簡(jiǎn)單的采集和 stdout 輸出可以把不相關(guān)的插件全部關(guān)掉最終二進(jìn)制會(huì)小很多內(nèi)存占用也更干凈。但關(guān)閉 TLS 要慎重任何需要 HTTPS、TLS 連接后端的場(chǎng)景都不能關(guān)。源碼編譯的坑集中在這幾個(gè)地方CMake 版本過(guò)低導(dǎo)致部分開(kāi)關(guān)不生效缺少 flex/bison 導(dǎo)致 parser 代碼無(wú)法生成以及編譯時(shí)用 GCC 版本過(guò)新產(chǎn)生兼容警告多數(shù)能忽略但要留意有沒(méi)有強(qiáng)制報(bào)錯(cuò)。遇到編譯失敗先查官方文檔對(duì)應(yīng)版本的“構(gòu)建要求”部分不要盲調(diào)參數(shù)。3.3 安裝路徑盡量固定無(wú)論哪種方式我建議把 Fluent Bit 安裝在固定目錄并做成符號(hào)鏈接比如/usr/local/fluent-bit指向?qū)嶋H目錄。后續(xù)升級(jí)時(shí)直接替換目錄內(nèi)容配置文件放在獨(dú)立路徑如/etc/fluent-bit/這樣配置和二進(jìn)制分離升級(jí)時(shí)不用遷移配置。對(duì) systemd unit 而言ExecStart 路徑一變目標(biāo)路徑不一致就會(huì)導(dǎo)致服務(wù)起不來(lái)。路徑規(guī)劃是安裝階段最該想清楚的事之一后期修改的成本遠(yuǎn)高于現(xiàn)在多花一分鐘決定。4. 安裝完成后的驗(yàn)證不只是看版本號(hào)很多人做完fluent-bit -v看到版本號(hào)輸出就認(rèn)為裝好了這是不夠的。真正的驗(yàn)證要覆蓋四個(gè)層面插件是否完整、配置能否解析、服務(wù)能否運(yùn)行、采集鏈路是否打通。4.1 第一輪驗(yàn)證插件列表和輸入輸出模塊查看已啟用插件的命令是fluent-bit -l輸出會(huì)列出 input、filter、output 三部分的插件列表。這里要看的是你計(jì)劃用的插件是否都在。比如你要對(duì)接 Kafka但列表里沒(méi)有 kafka output那后面配置寫(xiě)了也跑不起來(lái)。另一個(gè)命令是看幫助信息fluent-bit -h留意幾行重要信息默認(rèn)配置文件路徑、TLS 支持的版本、系統(tǒng)編譯參數(shù)。這些信息對(duì)后面排查問(wèn)題很有用。4.2 配置語(yǔ)法校驗(yàn)直接啟動(dòng)服務(wù)之前先用 dry run 模式做配置解析fluent-bit -c /etc/fluent-bit/fluent-bit.conf --dry-run如果配置有語(yǔ)法錯(cuò)誤程序會(huì)提示第幾行有問(wèn)題常見(jiàn)的錯(cuò)誤有使用了未編譯的插件、錯(cuò)誤配置了 key-value 語(yǔ)法、忘記了[INPUT]或[OUTPUT]段落標(biāo)識(shí)。--dry-run不會(huì)真正啟動(dòng)采集所以可以在測(cè)試環(huán)境下反復(fù)試錯(cuò)。4.3 最小化鏈路驗(yàn)證tail 輸入到 stdout 輸出為了確認(rèn)安裝真的可用最好先跑一個(gè)最小配置把采集鏈路打通再疊加業(yè)務(wù)配置。新建一個(gè)測(cè)試配置[INPUT] Name tail Path /var/log/test.log Read_from_Head true [OUTPUT] Name stdout Match *然后制造一些測(cè)試日志echo hello fluent bit /var/log/test.log fluent-bit -c test.conf如果能在 stdout 看到解析后的記錄說(shuō)明基礎(chǔ)鏈路正常。這個(gè)測(cè)試的最大價(jià)值在于驗(yàn)證文件讀取權(quán)限、解析器工作、輸出流程是否通暢。如果這一步就報(bào)錯(cuò)直接看輸出信息定位通常不是權(quán)限問(wèn)題就是路徑不對(duì)。4.4 服務(wù)化驗(yàn)證與進(jìn)程觀測(cè)確認(rèn)手動(dòng)跑通后再回到 systemd 服務(wù)模式。啟動(dòng)服務(wù)后用systemctl status查看進(jìn)程狀態(tài)用journalctl -u fluent-bit -f查看運(yùn)行時(shí)日志。日志采集器的運(yùn)行狀態(tài)不能只看進(jìn)程存在還要觀察數(shù)據(jù)是否真的在流動(dòng)。可以在測(cè)試后端比如本地起一個(gè)簡(jiǎn)單的 HTTP 接收端看到記錄持續(xù)到達(dá)。對(duì) stdout 輸出場(chǎng)景journalctl里本身就能看到輸出內(nèi)容但更推薦用一個(gè)明確的后端來(lái)驗(yàn)證。4.5 常見(jiàn)驗(yàn)證失敗的坑安裝完最容易出問(wèn)題的兩個(gè)點(diǎn)tail和journald輸入被權(quán)限卡住。版本新一點(diǎn)的 systemd 對(duì)journalctl的訪問(wèn)權(quán)限控制更嚴(yán)格運(yùn)行 Fluent Bit 的用戶不在相應(yīng)組里時(shí)拿不到 journald 數(shù)據(jù)。用 tail 插件跟蹤/var/log/下的文件也要確保運(yùn)行用戶對(duì)目標(biāo)目錄和文件有讀權(quán)限否則 Fluent Bit 不會(huì)報(bào)錯(cuò)只是默默讀不到數(shù)據(jù)。另一個(gè)坑是Read_from_Head的理解。這個(gè)選項(xiàng)只對(duì)tail從文件“當(dāng)前結(jié)尾之前”開(kāi)始讀的場(chǎng)景有效。新安裝后第一次希望從頭讀取歷史日志時(shí)需要顯式開(kāi)啟但要注意第一次讀完并記錄 offset 后再重啟服務(wù)會(huì)從上次位置繼續(xù)不會(huì)重復(fù)讀。如果想重新讀要?jiǎng)h除對(duì)應(yīng)的 db 文件tail 插件會(huì)保存讀取位置的 offset 數(shù)據(jù)庫(kù)。5. 升級(jí)、卸載與維護(hù)別讓配置文件拖后腿安裝只是第一步長(zhǎng)期運(yùn)行后必然面對(duì)版本升級(jí)和意外回退。這一節(jié)的經(jīng)驗(yàn)大多來(lái)自線上環(huán)境實(shí)際處理過(guò)的麻煩。5.1 卸載與殘留清理RPM/deb 包的卸載命令分別是dnf remove fluent-bit和apt purge fluent-bit。但卸載包并不會(huì)刪除配置文件和數(shù)據(jù)目錄。如果目標(biāo)是把機(jī)器徹底清理干凈需要手工刪除配置文件/etc/fluent-bit/二進(jìn)制目錄/usr/bin/fluent-bit或/opt/fluent-bit/狀態(tài)文件如果配置里用了 tail db 或者存儲(chǔ)路徑對(duì)應(yīng)目錄常見(jiàn)如/var/lib/fluent-bit/也要清掉不清狀態(tài)文件的后果是以后重新安裝并指向同一目錄時(shí)會(huì)拿到上次殘留的 offset歷史日志不會(huì)重新讀取。遇到這種問(wèn)題先別懷疑程序 bug大概率是 db 文件沒(méi)清理。5.2 跨版本升級(jí)注意事項(xiàng)官方文檔一般會(huì)提示大版本升級(jí)前查看兼容矩陣。實(shí)際升級(jí)時(shí)我最常做的事是先在測(cè)試機(jī)安裝新版本加載生產(chǎn)配置觀察 parse 和 filter 是否報(bào)錯(cuò)檢查配置中使用的插件是否有破壞性變更如參數(shù)改名、默認(rèn)行為變化提前做好回退方案保留舊版 rpm/deb 文件或者靜態(tài)二進(jìn)制原始?jí)嚎s包有一次我把 1.9 升到 2.0發(fā)現(xiàn)舊配置里某 output 插件的tls.debug參數(shù)失效了程序不會(huì)報(bào)錯(cuò)只是日志不再輸出調(diào)試信息。這種無(wú)聲變更最危險(xiǎn)必須依靠對(duì)比測(cè)試而不是僅看安裝成功與否。5.3 配置文件管理建議配置文件要納入版本管理。.conf文件本身是純文本直接放進(jìn) git 倉(cāng)庫(kù)沒(méi)有障礙。但要注意機(jī)密信息如后端認(rèn)證密鑰不要直接寫(xiě)進(jìn)配置優(yōu)先使用環(huán)境變量或獨(dú)立文件權(quán)限控制。另一個(gè)容易被忽略的點(diǎn)是配置文件的 include 機(jī)制。把輸入、輸出拆成獨(dú)立文件再在主配置里引入后續(xù)修改輸出端時(shí)不用動(dòng)主配置也方便多環(huán)境復(fù)用。示例INCLUDE inputs.conf INCLUDE outputs.conf INCLUDE filters.conf最后日志采集器的配置變更影響面很大倉(cāng)庫(kù)里應(yīng)該保留每個(gè)版本的配置快照?;貪L二進(jìn)制版本時(shí)配置也一并回滾避免出現(xiàn)新版配置配舊版程序的混亂局面。5.4 階段小結(jié)安裝完成后的第一周要盯什么安裝后第一周我會(huì)建議重點(diǎn)觀察三個(gè)指標(biāo)進(jìn)程是否穩(wěn)定不重啟、內(nèi)存是否有緩慢增長(zhǎng)趨勢(shì)、后端接收到的日志量和預(yù)期是否匹配。Fluent Bit 的崩潰在多數(shù)情況下會(huì)由 systemd 自動(dòng)拉起但反復(fù)重啟說(shuō)明存在配置問(wèn)題或資源限制如打開(kāi)文件數(shù)用journalctl拉全量日志查看重啟原因。內(nèi)存緩慢增長(zhǎng)如果達(dá)到幾十 MB 后穩(wěn)定一般屬于正常緩存如果無(wú)上限增長(zhǎng)就要懷疑某個(gè) filter 或插件存在泄漏需要隔離排查。6. 幾個(gè)安裝之外的補(bǔ)充經(jīng)驗(yàn)最后補(bǔ)充幾條和安裝強(qiáng)相關(guān)、但文檔里不容易被注意到的經(jīng)驗(yàn)。依賴最小化時(shí)靜態(tài)二進(jìn)制優(yōu)先。生產(chǎn)服務(wù)器上我不喜歡讓日志采集程序依賴一堆系統(tǒng)庫(kù)庫(kù)版本升級(jí)可能導(dǎo)致動(dòng)態(tài)鏈接失敗。靜態(tài)二進(jìn)制雖然體積大但運(yùn)行環(huán)境更可控。配置變更和二進(jìn)制升級(jí)解耦。個(gè)人習(xí)慣是配置文件永遠(yuǎn)獨(dú)立于安裝目錄這樣升級(jí)二進(jìn)制時(shí)只要重新引入配置文件路徑就行。很多事故都是升級(jí)時(shí)把整個(gè)目錄覆蓋了導(dǎo)致配置文件丟失或用到舊版配置。命名規(guī)范值得早點(diǎn)定。機(jī)器上如果有多套采集程序二進(jìn)制名字、unit 文件名字、配置文件路徑都包含 Fluent Bit 字樣便于后續(xù)排查。曾經(jīng)遇到一臺(tái)機(jī)器同時(shí)存在兩套 Fluent Bit 進(jìn)程排查人員花了半小時(shí)才弄清楚誰(shuí)在采集什么。日志采集器屬于基礎(chǔ)設(shè)施安裝得越規(guī)范后面的運(yùn)維越省心。建議把本次安裝使用的命令、版本、配置路徑、驗(yàn)證結(jié)果記錄在團(tuán)隊(duì)的運(yùn)維文檔中而不是僅留在本文。裝完不是結(jié)束能清晰復(fù)現(xiàn)安裝過(guò)程才是順利完成的標(biāo)準(zhǔn)。