fluent-bit(1)介绍

Fluent Bit 是一个开源的、高性能的日志处理器和转发器,专为嵌入式系统、物联网设备和云原生环境设计。它由 Treasure Data 开发,现由 CNCF(云原生计算基金会)托管,与 Fluentd 同属一个生态系统,但相比 Fluentd,Fluent Bit 更轻量,资源占用更低,适用于资源受限的场景。

d21f218e7adff052327f1b8b416fe5eb.png

fluent-bit

Fluent Bit 简介

  • 核心功能: 收集、解析、过滤和转发日志或数据。

  • 特点:

    • 轻量级: 二进制文件仅约 500 KB,内存占用低(通常几 MB)。
    • 高性能: 单进程架构,支持多线程,吞吐量高
    • 插件化: 支持丰富的输入、过滤和输出插件,可以灵活扩展。
    • 跨平台: 支持 Linux、Windows、macOS 等操作系统。
  • 典型用途:

    • 日志收集(如容器日志、系统日志)。
    • 数据流处理(发送到 Elasticsearch、Kafka、S3 等)。
    • 监控和调试。

基本架构

c633c11728c8a4d9daa03f6aba3f4b52.png

Fluent Bit 的工作流程分为三个阶段:

  1. Input(输入): 从各种源头收集数据(如文件、syslog、Docker、Kubernetes)。
  2. Filter(过滤): 对数据进行加工(如解析 JSON、添加字段、过滤无用数据)。
  3. Output(输出): 将数据发送到目标端(如数据库、消息队列、云存储)。

安装

以下是常见的安装方法(以 Linux 为例):

  1. 通过包管理器:

    1
    2
    3
    # Ubuntu/Debian
    sudo apt-get update
    sudo apt-get install fluent-bit
    1
    2
    # CentOS/RHEL
    sudo yum install fluent-bit
  2. Docker:

    1
    docker run -ti fluent/fluent-bit

使用 Fluent Bit

Fluent Bit 通过配置文件(默认路径:/etc/fluent-bit/fluent-bit.conf)定义其行为。配置文件采用键值对格式,分为 [SERVICE][INPUT][FILTER][OUTPUT] 部分。

1.简单示例

假设我们要收集 /var/log/syslog 的日志,并输出到标准输出(stdout)。

  1. 编辑配置文件 fluent-bit.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [SERVICE]
    Flush 1 # 每1秒刷新一次
    Log_Level info

    [INPUT]
    Name tail
    Path /var/log/syslog

    [OUTPUT]
    Name stdout
    Format json
  2. 运行 Fluent Bit:

    1
    fluent-bit -c fluent-bit.conf
  3. 输出结果示例:

    1
    {"date":"2025-03-30T10:00:00","host":"example","message":"kernel: system started"}

2.更复杂示例

将 Kubernetes 容器日志收集并发送到 Elasticsearch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[SERVICE]
Flush 5
Log_Level info

[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
Tag kube.*

[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Merge_Log On

[OUTPUT]
Name es
Match kube.*
Host elasticsearch
Port 9200
Index kubernetes_logs
Type _doc
  • 说明:
    • tail 插件读取容器日志。
    • kubernetes 过滤器解析元数据(如 pod 名称、命名空间)。
    • es 输出插件将数据发送到 Elasticsearch。

常用插件

  • 输入插件: tail(文件)、cpu(CPU 指标)、http(HTTP 请求)。
  • 过滤插件: grep(正则过滤)、record_modifier(修改记录)。
  • 输出插件: file(文件)、kafka(消息队列)、s3(AWS S3)。

使用场景

  1. 日志聚合: 在 Kubernetes 中收集容器日志,发送到集中式存储。
  2. 实时监控: 收集系统指标,输出到 Prometheus 或 Grafana。
  3. 数据管道: 将日志从边缘设备传输到云端分析平台。

调试与管理

  • 检查配置是否正确:
    1
    fluent-bit -c fluent-bit.conf --dry-run
  • 查看版本:
    1
    fluent-bit --version
  • 启动服务( systemd):
    1
    2
    sudo systemctl start fluent-bit
    sudo systemctl enable fluent-bit

Fluent Bit 的轻量和灵活性使其成为现代日志处理的重要工具。