搬瓦工部署 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% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。