搬瓦工部署 Fluent Bit 轻量日志处理工具教程
Fluent Bit 是 Fluentd 的轻量级版本,同样是 CNCF 毕业项目。它使用 C 语言编写,内存占用极低(通常仅需 450KB),非常适合资源受限的环境。Fluent Bit 通常作为日志采集的第一跳,将数据转发给 Fluentd 或直接发送到后端存储。本文将介绍如何在搬瓦工 VPS 上部署 Fluent Bit。部署前请确保已安装 Docker 和 Docker Compose。
一、Fluent Bit 与 Fluentd 对比
- 语言:Fluent Bit 用 C 编写,Fluentd 用 Ruby + C 编写。
- 内存占用:Fluent Bit 约 450KB,Fluentd 约 40MB。
- 插件数量:Fluent Bit 约 80 个内置插件,Fluentd 有 500+ 社区插件。
- 适用场景:Fluent Bit 适合边缘采集,Fluentd 适合中心聚合。
- 配置格式:两者配置语法类似,Fluent Bit 还支持 YAML 格式。
常见架构是:Fluent Bit(边缘采集)→ Fluentd(中心聚合)→ 存储后端。
二、系统要求
- 操作系统:Ubuntu 20.04+ 或 Debian 11+。
- 内存:至少 256MB(Fluent Bit 本身极其轻量)。
- 磁盘:至少 1GB 可用空间。
即使是搬瓦工入门方案也能流畅运行 Fluent Bit。购买时使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买入口:bwh81.net。
三、创建项目目录
mkdir -p /opt/fluent-bit/{conf,parsers} && cd /opt/fluent-bit
四、编写配置文件
cat > /opt/fluent-bit/conf/fluent-bit.conf <<'EOF'
[SERVICE]
Flush 5
Daemon Off
Log_Level info
Parsers_File /fluent-bit/etc/parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_Port 2020
# 收集系统日志
[INPUT]
Name tail
Path /var/log/syslog
Tag syslog
Parser syslog-rfc3164
Refresh_Interval 10
# 收集 Nginx 访问日志
[INPUT]
Name tail
Path /var/log/nginx/access.log
Tag nginx.access
Parser nginx
# 收集 CPU 指标
[INPUT]
Name cpu
Tag metrics.cpu
Interval_Sec 30
# 收集内存指标
[INPUT]
Name mem
Tag metrics.memory
Interval_Sec 30
# 收集磁盘指标
[INPUT]
Name disk
Tag metrics.disk
Interval_Sec 60
# 添加主机名
[FILTER]
Name record_modifier
Match *
Record hostname ${HOSTNAME}
# 过滤 Nginx 健康检查
[FILTER]
Name grep
Match nginx.access
Exclude path /health
# 输出到标准输出(调试)
[OUTPUT]
Name stdout
Match metrics.*
Format json_lines
# 输出到文件
[OUTPUT]
Name file
Match syslog
Path /var/log/fluent-bit/output/
File syslog.log
# 转发到 Fluentd
[OUTPUT]
Name forward
Match nginx.*
Host fluentd-host
Port 24224
EOF
五、编写解析器配置
cat > /opt/fluent-bit/conf/parsers.conf <<'EOF'
[PARSER]
Name nginx
Format regex
Regex ^(?P[^ ]*) (?P[^ ]*) (?P[^ ]*) \[(?P
六、编写 Docker Compose 配置
cat > /opt/fluent-bit/docker-compose.yml <<'EOF'
version: '3.8'
services:
fluent-bit:
image: fluent/fluent-bit:latest
restart: always
ports:
- "2020:2020"
volumes:
- ./conf/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf:ro
- ./conf/parsers.conf:/fluent-bit/etc/parsers.conf:ro
- /var/log:/var/log:ro
- fluent_bit_output:/var/log/fluent-bit/output
volumes:
fluent_bit_output:
EOF
七、启动服务
cd /opt/fluent-bit
docker compose up -d
检查运行状态:
# 查看日志
docker compose logs -f fluent-bit
# 检查内置监控端点
curl http://localhost:2020/api/v1/health
curl http://localhost:2020/api/v1/metrics
八、对接 Loki(Grafana 日志系统)
Fluent Bit 可以直接将日志发送到 Grafana Loki:
[OUTPUT]
Name loki
Match *
Host loki-host
Port 3100
Labels job=fluent-bit, hostname=${HOSTNAME}
Auto_Kubernetes_Labels Off
九、对接 Elasticsearch
[OUTPUT]
Name es
Match nginx.*
Host elasticsearch-host
Port 9200
Index nginx-logs
Logstash_Format On
Logstash_Prefix nginx
Retry_Limit 5
十、常见问题
日志未被收集
检查日志文件路径是否正确,以及容器是否有读取权限。Fluent Bit 使用位置文件(DB)记录读取进度,如果文件被轮转可能需要重置。
输出目标连接失败
检查目标服务的地址和端口,确保网络可达。Fluent Bit 内置重试机制,临时故障会自动恢复。
总结
Fluent Bit 是目前最轻量的日志收集工具,资源占用极低,非常适合在 VPS 上作为日志采集代理运行。如果需要更强大的日志处理能力,可以将其与 Fluentd 配合使用;如果追求性能和功能的平衡,参考 Vector。选购搬瓦工 VPS 使用优惠码 NODESEEK2026 可享 6.77% 折扣。