fluent-bit(1)介绍
Fluent Bit 是一个开源的、高性能的日志处理器和转发器,专为嵌入式系统、物联网设备和云原生环境设计。它由 Treasure Data 开发,现由 CNCF(云原生计算基金会)托管,与 Fluentd 同属一个生态系统,但相比 Fluentd,Fluent Bit 更轻量,资源占用更低,适用于资源受限的场景。
fluent-bit
Fluent Bit 简介
核心功能: 收集、解析、过滤和转发日志或数据。
特点:
- 轻量级: 二进制文件仅约 500 KB,内存占用低(通常几 MB)。
- 高性能: 单进程架构,支持多线程,吞吐量高。
- 插件化: 支持丰富的输入、过滤和输出插件,可以灵活扩展。
- 跨平台: 支持 Linux、Windows、macOS 等操作系统。
典型用途:
- 日志收集(如容器日志、系统日志)。
- 数据流处理(发送到 Elasticsearch、Kafka、S3 等)。
- 监控和调试。
基本架构
Fluent Bit 的工作流程分为三个阶段:
- Input(输入): 从各种源头收集数据(如文件、syslog、Docker、Kubernetes)。
- Filter(过滤): 对数据进行加工(如解析 JSON、添加字段、过滤无用数据)。
- Output(输出): 将数据发送到目标端(如数据库、消息队列、云存储)。
安装
以下是常见的安装方法(以 Linux 为例):
通过包管理器:
1
2
3# Ubuntu/Debian
sudo apt-get update
sudo apt-get install fluent-bit1
2# CentOS/RHEL
sudo yum install fluent-bitDocker:
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)。
编辑配置文件
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运行 Fluent Bit:
1
fluent-bit -c fluent-bit.conf
输出结果示例:
1
{"date":"2025-03-30T10:00:00","host":"example","message":"kernel: system started"}
2.更复杂示例
将 Kubernetes 容器日志收集并发送到 Elasticsearch:
1 | [SERVICE] |
- 说明:
tail
插件读取容器日志。kubernetes
过滤器解析元数据(如 pod 名称、命名空间)。es
输出插件将数据发送到 Elasticsearch。
常用插件
- 输入插件:
tail
(文件)、cpu
(CPU 指标)、http
(HTTP 请求)。 - 过滤插件:
grep
(正则过滤)、record_modifier
(修改记录)。 - 输出插件:
file
(文件)、kafka
(消息队列)、s3
(AWS S3)。
使用场景
- 日志聚合: 在 Kubernetes 中收集容器日志,发送到集中式存储。
- 实时监控: 收集系统指标,输出到 Prometheus 或 Grafana。
- 数据管道: 将日志从边缘设备传输到云端分析平台。
调试与管理
- 检查配置是否正确:
1
fluent-bit -c fluent-bit.conf --dry-run
- 查看版本:
1
fluent-bit --version
- 启动服务( systemd):
1
2sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit
Fluent Bit 的轻量和灵活性使其成为现代日志处理的重要工具。