Fluent Bit 详解:云原生时代的轻量日志采集器

Fluent Bit 中文详解:C 语言极致轻量(约 1MB 内存)、INPUT/FILTER/OUTPUT 配置结构、tail 文件采集、parser 解析器、Kubernetes 过滤器、stream processor SQL 流处理、容器与嵌入式场景,以及观测云 DataKit 的对标方案。

最佳实践
Fluent Bit 详解:云原生时代的轻量日志采集器技术指南封面

Fluent Bit 是 Fluentd 的轻量姊妹项目:C 语言编写、单实例内存约 1MB、零外部依赖,为容器与边缘环境而生。它是 Kubernetes 日志采集 DaemonSet 的事实标准之一。本文讲解其架构、配置实战与观测云视角的选型建议。

核心要点速览

  • 极致轻量:C 实现、内存 1MB 级——DaemonSet 部署到每个节点也不会成为资源负担。
  • INI 风格配置:[INPUT]/[FILTER]/[OUTPUT] 段落直截了当,也有 YAML 版本。
  • Kubernetes 过滤器开箱即用:自动为容器日志附加 namespace、pod、label 元数据。
  • 观测云视角:观测云用户优先 DataKit(同为轻量采集器,平台联动更深);存量 Fluent Bit 可直接外送观测云。

1. 配置结构

[SERVICE]
    Flush        1
    Log_Level    info

[INPUT]
    Name         tail
    Path         /var/log/app/*.log
    Tag          app.*
    Parser       json
    Refresh_Interval 5

[FILTER]
    Name         record_modifier
    Match        app.*
    Record       hostname ${HOSTNAME}
    Record       env production

[OUTPUT]
    Name         http
    Match        app.*
    Host         logs.example.com
    Port         443
    URI          /ingest
    Format       json
    tls          On

三段式数据流:INPUT 采集打 tag → FILTER 按 Match 加工 → OUTPUT 按 Match 外送。Flush 控制批量发送间隔。

2. 核心插件

类别 常用插件
输入 tail(文件)、systemd(journal)、syslog、http、opentelemetry
过滤 grep(含/排除)、record_modifier(加字段)、modify(条件改字段)、kubernetes(K8s 元数据)、lua(自定义脚本)、nest(字段结构调整)
输出 http、file、forward(发给 Fluentd)、kafka、es/opensearch、s3

kubernetes 过滤器是 K8s 场景的杀手锏:自动从容器运行时元数据中提取 pod 名、命名空间、标签附加到日志上——没有它,容器日志只是一堆匿名文本。

3. Parser:把文本变成结构

[PARSER]
    Name        nginx
    Format      regex
    Regex       ^(?<remote>[^ ]*) \S+ \S+ \[(?<time>[^\]]*)\] "(?<method>\S+) (?<path>[^"]*)" (?<code>\d+)
    Time_Key    time
    Time_Format %d/%b/%Y:%H:%M:%S %z

INPUT 里指定 Parser nginx 即可在采集时完成解析。JSON 日志用内置 json parser 零配置。

4. Stream Processor:边流边算

Fluent Bit 内置 SQL 流处理器,可对流动中的日志做实时计算:

SELECT pod_name, COUNT(*) AS errors
FROM STREAM:app.*
WHERE level = 'error'
GROUP BY pod_name

把"每 Pod 错误数"这类聚合前置到采集层,减少后端压力。

观测云视角:DataKit 对标与迁移

DataKit 与 Fluent Bit 同为轻量采集器定位,但 DataKit 与观测云平台开箱联动:

能力 Fluent Bit 观测云 DataKit
资源占用 约 1MB 轻量级(K8s DaemonSet 常驻)
K8s 元数据附加 kubernetes 过滤器 内置容器/K8s 采集自动打标
解析处理 parser + lua Pipeline(grok/函数脚本)
平台联动 通用输出 查看器/监控器/索引/敏感扫描开箱即用

存量 Fluent Bit:OUTPUT 改 http 指向观测云接收端即完成迁移;新环境直接 DataKit DaemonSet,采集、打标、缓冲、转发一站式。

常见问题(FAQ)

Fluent Bit 和 Fluentd 到底什么关系?

同一团队(CNCF 同项目族)的两代产品:Fluent Bit 轻量负责边缘采集,Fluentd 全能负责中心汇聚,两者通过 forward 协议互通。现代 K8s 场景 Fluent Bit 常独立完成全链路。

配置调试有什么好办法?

两步法:先把 OUTPUT 设为 stdout 确认 Fluent Bit 看到的数据形态;再 Log_Level debug 观察解析与路由过程。看到记录里有默认的 log 字段说明 parser 没生效。

tail 插件会重复采集吗?

Fluent Bit 维护位点数据库(DB 参数指定),重启后断点续采不重复。轮转场景配 Rotate_WaitIgnore_Older 控制历史文件处理。

Lua 过滤器什么时候用?

当 modify/record_modifier 的条件逻辑不够用(如部分字段脱敏、复杂计算)时上 Lua——它能做任何事,但请先确认内置过滤器真不够用,简单优先。

系列阅读


获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台