OpenTelemetry 與 Fluent Bit:關(guān)系深度解讀
Fluent Bit捕獲日志和本地指標(biāo),兼容OpenTelemetry (OTel) 標(biāo)準(zhǔn)。OTel核心是OTLP協(xié)議,F(xiàn)luent Bit可作為OTLP收集器或?qū)С銎鳌luent Bit v3支持OTLP gRPC。
譯自:How Are OpenTelemetry and Fluent Bit Related?[1]
作者:Phil Wilkins
編者注:以下文章摘自 Manning 出版書籍《Fluent Bit與Kubernetes[2]》的第1章,該書是配置Kubernetes日志、指標(biāo)和追蹤管道的指南。此摘錄重點介紹了Fluent Bit與OpenTelemetry的關(guān)系,以及它在捕獲日志以及CPU、內(nèi)存和存儲使用情況等本地指標(biāo)方面的演變。要更深入地了解Fluent Bit和OTel如何執(zhí)行不同的功能,請下載完整版書籍[3]。
OpenTelemetry如何誕生
在OpenTelemetry (OTel) 出現(xiàn)之前,指導(dǎo)指標(biāo)、追蹤和日志可觀測性的主要規(guī)范來自云原生計算基金會 (CNCF)[4] 內(nèi)的幾項標(biāo)準(zhǔn)化工作,包括OpenTracing[5]、OpenCensus[6],以及——鑒于其主導(dǎo)地位——Fluentd[7],并與之相關(guān)聯(lián)的Fluent Bit在日志結(jié)構(gòu)化方面的應(yīng)用[8]。
不同的標(biāo)準(zhǔn)通常需要不同的工具來捕獲這些數(shù)據(jù)。Fluent Bit[9] 始終能夠捕獲一些指標(biāo)數(shù)據(jù);物聯(lián)網(wǎng) (IoT) 生態(tài)系統(tǒng)需要保持軟件占用空間小,因此一個服務(wù)同時捕獲日志和指標(biāo)是更優(yōu)選的。因此,F(xiàn)luent Bit 不僅捕獲日志,還捕獲 CPU、內(nèi)存和存儲使用情況等本地指標(biāo),這是有意義的。
將所有這些數(shù)據(jù)源匯集在一起推動了運(yùn)維監(jiān)控的簡化,從而實現(xiàn)了快速普及并證明了其顛覆性。Fluent Bit對OTel標(biāo)準(zhǔn)的支持[10]及其在OTel生態(tài)系統(tǒng)內(nèi)工作的能力不需要任何根本性的改變,盡管它們推動了其部分實現(xiàn)的一些升級。在某些方面,這些升級使Fluent Bit之前已經(jīng)在做的事情正式化了。通過這種對齊,F(xiàn)luent Bit已做好充分準(zhǔn)備來支持[11] OTel標(biāo)準(zhǔn)的采用,而無需強(qiáng)加它們,從而使其采用更具增量性。
來自后續(xù)Manning書籍章節(jié)的經(jīng)驗
在未來的章節(jié)中,當(dāng)我們開始深入探討Fluent Bit的輸入和輸出功能時,我們將進(jìn)一步研究其與OTel以及可觀測性領(lǐng)域的領(lǐng)先產(chǎn)品之間的關(guān)系,例如Prometheus[12](它幫助OTel進(jìn)一步向前發(fā)展)和Grafana[13]。我們還將研究致力于支持OTel標(biāo)準(zhǔn)的商業(yè)供應(yīng)商,他們創(chuàng)建了一個快速增長的可連接監(jiān)控工具生態(tài)系統(tǒng)。
注意: 如果您需要對縮略語和術(shù)語進(jìn)行快速參考,可以在此處[14]找到一個方便的詞匯表。此外,附錄B列出了幾個優(yōu)秀的資源。(下載書籍[15] 以查看附錄 B。)
OTLP和OTel如何協(xié)同工作
OTel 的核心是OpenTelemetry協(xié)議[16] (OTLP),它詳細(xì)說明了遙測數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)、編碼和傳輸。
目前,OTLP支持使用遠(yuǎn)程過程調(diào)用 (gRPC) 進(jìn)行傳輸[17],其中 HTTP/2 使用 Protocol Buffer (Protobuf),JSON 則同步使用 HTTP。OTLP提倡將 gRPC 作為首選的通信方法,將 JSON 作為降級或備用方案。
OTel作為一個項目,遠(yuǎn)不止定義OTLP。它還提供了標(biāo)準(zhǔn)中描述的功能的實現(xiàn)(有時被描述為參考實現(xiàn)),以及工具和庫。
這些工具和庫以多種語言實現(xiàn);我們可以使用它們來幫助將邏輯注入應(yīng)用程序,并快速使數(shù)據(jù)應(yīng)用程序生成追蹤。OTel還具有日志追加器等功能,允許日志框架使用OTLP規(guī)范發(fā)送日志。
Fluent Bit如何融入OpenTelemetry解決方案
為了理解Fluent Bit如何融入OTel解決方案,讓我們來看看Fluent Bit可以使用OTel術(shù)語[18]做些什么:
- ? 鑒于其能夠從不同來源收集監(jiān)控和可觀測性[19]數(shù)據(jù)并將其轉(zhuǎn)換為OTLP結(jié)構(gòu),F(xiàn)luent Bit可以扮演OpenTelemetry Collector的角色。
- ? 因為Fluent Bit旨在分布式環(huán)境中工作,并且能夠以O(shè)TLP格式將數(shù)據(jù)傳遞給任何其他符合OpenTelemetry的Collector(可以是Fluent Bit節(jié)點或另一個產(chǎn)品),我們可以將Fluent Bit描述為能夠充當(dāng)OTLP Exporter。
圖1展示了Fluent Bit如何融入OpenTelemetry環(huán)境,它能夠處理應(yīng)用程序生成(無論是否借助OTel庫或工具)的日志 (L)、指標(biāo) (M) 和追蹤 (T),并能夠與OpenTelemetry Collector進(jìn)行交互。
Collector vs. Exporter:為Fluent Bit選擇合適的角色
因為OTel提供了Collector和Exporter功能的實現(xiàn),所以將Fluent Bit稱為OpenTelemetry Collector或OpenTelemetry Exporter可能會引起混淆[20]。標(biāo)準(zhǔn)本身叫做OTLP,因此將Fluent Bit稱為符合OTLP更清晰,即使它不那么明顯地說明我們可能部署Fluent Bit[21] 來執(zhí)行的任務(wù)。
此外,OpenTelemetry社區(qū)內(nèi)部對該項目自身實現(xiàn)的 Collector(稱為 OpenTelemetry Collector)與其他該功能實現(xiàn)之間的差異存在一些敏感性。我們傾向于將 Fluent Bit 描述為 OTLP Collector(畢竟,協(xié)議遵從性是 Collector 功能的關(guān)鍵),并減少 CNCF 項目之間的歧義。
Fluent Bit與OpenTelemetry的關(guān)系,應(yīng)用程序生成OTel日志、指標(biāo)和追蹤,F(xiàn)luent Bit促進(jìn)它們傳輸?shù)椒螼Tel的聚合或處理點。應(yīng)用程序可以直接或通過OTel組件發(fā)送OTLP數(shù)據(jù),我們可以將數(shù)據(jù)路由到其他OTel服務(wù)或分析工具。
圖1. Fluent Bit與OpenTelemetry的關(guān)系,應(yīng)用程序生成OTel日志、指標(biāo)和追蹤,F(xiàn)luent Bit促進(jìn)它們傳輸?shù)椒螼Tel的聚合或處理點。應(yīng)用程序可以直接或通過OTel組件發(fā)送OTLP數(shù)據(jù),我們可以將數(shù)據(jù)路由到其他OTel服務(wù)或分析工具。
Protocol Buffers (Protobuf)
Protocol buffers 是 OTel 使用的 gRPC 的一項關(guān)鍵技術(shù)。Protocol buffers 具有簡潔定義的模式,與 Protobuf 工具配合使用可生成用于發(fā)送和接收有效載荷的代碼。定義良好的模式允許工具創(chuàng)建生成壓縮二進(jìn)制有效載荷表示的代碼。這種模式既是優(yōu)勢,也可能是潛在的限制。
優(yōu)勢在于高效的有效載荷傳輸。缺點是模式更改會影響提供者和消費者,并使實現(xiàn)容忍讀取器集成模式更具挑戰(zhàn)性。此外,鑒于 Protobuf 生成的有效載荷是壓縮的二進(jìn)制格式,將其注入能夠進(jìn)行轉(zhuǎn)換的任何通信中間件會更加困難。附錄 B 中包含了指向 OTel、Protobuf 和相關(guān)技術(shù)的鏈接。
展望未來:進(jìn)一步探索Fluent Bit和OTel
隨著我們深入閱讀《Fluent Bit與Kubernetes[23]》一書(可在此處[24]下載完整版),我們將更深入地研究Fluent Bit和OpenTelemetry如何執(zhí)行不同的功能。請注意,在Fluent Bit v3之前,OpenTelemetry協(xié)議支持僅限于HTTP和JSON。版本3帶來了增強(qiáng)功能,支持HTTP/2,使Fluent Bit能夠使用gRPC。這反過來意味著Fluent Bit可以提供一個完全符合OTLP的實現(xiàn)[25],而無需利用降級到HTTP和JSON的功能。
引用鏈接
[1] How Are OpenTelemetry and Fluent Bit Related?:https://thenewstack.io/how-are-opentelemetry-and-fluent-bit-related/[2]Fluent Bit與Kubernetes:https://chronosphere.io/resource/fluent-bit-with-kubernetes-manning/?utm_source=sponsored-content&utm_id=TNS[3]下載完整版書籍:https://chronosphere.io/resource/fluent-bit-with-kubernetes-manning/?utm_source=sponsored-content&utm_id=TNS[4]云原生計算基金會 (CNCF):https://www.cncf.io/[5]OpenTracing:https://opentracing.io[6]OpenCensus:https://opencensus.io/?utm_source=sponsored-content&utm_id=TNS[7]Fluentd:https://chronosphere.io/learn/fluent-bit-vs-fluentd/[8]Fluent Bit在日志結(jié)構(gòu)化方面的應(yīng)用:https://thenewstack.io/a-guide-to-fluent-bit-processors-for-conditional-log-processing/[9]Fluent Bit:https://thenewstack.io/fluent-bit-a-specialized-event-capture-and-distribution-tool/[10]Fluent Bit對OTel標(biāo)準(zhǔn)的支持:https://chronosphere.io/learn/observability-pipeline-opentelemetry-fluent-bit/[11]Fluent Bit已做好充分準(zhǔn)備來支持:https://thenewstack.io/whats-driving-fluent-bit-adoption/[12]Prometheus:https://prometheus.io[13]Grafana:https://grafana.com/grafana[14]此處:https://opentelemetry.io/docs/concepts/glossary[15]*下載書籍*:https://chronosphere.io/resource/fluent-bit-with-kubernetes-manning/[16]OpenTelemetry協(xié)議:https://opentelemetry.io/docs/specs/otel/protocol/[17]OTLP支持使用遠(yuǎn)程過程調(diào)用 (gRPC) 進(jìn)行傳輸:https://betterstack.com/community/guides/observability/otlp/[18]OTel術(shù)語:https://opentelemetry.io/docs/concepts/components[19]監(jiān)控和可觀測性:https://thenewstack.io/monitoring-vs-observability-whats-the-difference/[20]Fluent Bit稱為OpenTelemetry Collector或OpenTelemetry Exporter可能會引起混淆:https://devopscon.io/blog/observability-monitoring/fluentbit-otel-k8s/[21]部署Fluent Bit:https://thenewstack.io/how-to-deploy-fluent-bit-in-a-kubernetes-native-way/[22]:https://cdn.thenewstack.io/media/2025/10/a1d98481-image1.png[23]Fluent Bit與Kubernetes:https://chronosphere.io/resource/fluent-bit-with-kubernetes-manning/[24]此處:https://chronosphere.io/resource/fluent-bit-with-kubernetes-manning/[25]Fluent Bit可以提供一個完全符合OTLP的實現(xiàn):https://chronosphere.io/resource/getting-started-with-fluent-bit-and-open-source-telemetry-pipelines/





























