服务器 Fluentd 教程:从安装到日志转发验证

服务器 Fluentd 教程:从安装到日志转发验证

如果你的服务器上散落着 Nginx、应用和系统日志,想统一收集再转发到 Elasticsearch、Kafka 或对象存储,Fluentd 是常用选择之一。
这篇教程按零基础可照做的顺序,讲清在 Linux 服务器上安装 Fluentd、写最小可用配置、验证日志是否成功转发的完整过程,并给出常见报错的处理思路。

Fluentd 是一个用 Ruby 写的日志采集与转发工具,官方为 Linux 提供了打包好的发行版 td-agent,它自带 Ruby 运行时和常用插件,适合不想手动处理依赖的新手。
本文以 td-agent 为例,适用于主流的 RPM 系(如 CentOS、Rocky Linux)和 DEB 系(如 Ubuntu、Debian)发行版。

安装前需要确认的三件事

安装前先确认环境,可以避免大部分“装完启动不了”的问题。

  • 系统架构:执行 uname -m,输出 x86_64 或 aarch64,确认有对应的安装包。
  • 内存与磁盘:Fluentd 本身占用不大,但缓冲队列会写磁盘,建议 /var/log 所在分区保留至少 1GB 可用空间,用 df -h 查看。
  • 时间同步:日志时间戳错乱会导致后续检索困难,执行 timedatectl status 确认系统时间正常,必要时开启 NTP。
注意:不要直接使用系统包管理器里的 fluentd 包,版本可能较旧且插件不全,优先使用官方 td-agent 仓库。

在服务器上安装 td-agent

以下命令需要 root 权限或 sudo。
不同发行版的仓库脚本不同,请按你的系统选择。

RPM 系(CentOS / Rocky / AlmaLinux)

curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh

DEB 系(Ubuntu / Debian)

curl -L https://toolbelt.treasuredata.com/sh/install-debian-bookworm-td-agent4.sh | sh

脚本会自动添加仓库并安装 td-agent。
安装完成后,用下面的命令确认版本和服务状态:

td-agent --version
systemctl status td-agent

如果 systemctl status 显示 active (running),说明服务已正常启动。
此时 td-agent 已带有一份默认配置,位置在 /etc/td-agent/td-agent.conf。

写一份最小可用的转发配置

默认配置只是把日志打印到本地,我们先改成一个能实际验证的转发任务:读取一个测试日志文件,把内容输出到另一个文件。
这样不依赖外部服务,方便确认链路是否通。

编辑配置文件:

vi /etc/td-agent/td-agent.conf

将内容替换为以下配置(注意保留缩进,Fluentd 配置对缩进不敏感,但 @ 开头的指令必须写对):


  @type tail
  path /var/log/myapp/test.log
  pos_file /var/log/td-agent/test.log.pos
  tag myapp.test
  
    @type none
  



  @type file
  path /var/log/td-agent/output
  
    flush_mode interval
    flush_interval 5s
  

这段配置做了两件事:

  • source 部分用 tail 插件持续读取 /var/log/myapp/test.log,每读一行打上 myapp.test 标签。
  • match 部分把带该标签的日志写入 /var/log/td-agent/output 目录下的文件,每 5 秒刷新一次缓冲。

这里有一个容易忽略的前提:/var/log/myapp/test.log 必须真实存在,且 td-agent 运行用户(通常是 td-agent)有读取权限。
可以先用下面命令创建并授权:

mkdir -p /var/log/myapp
touch /var/log/myapp/test.log
chown -R td-agent:td-agent /var/log/myapp

重载配置并验证数据是否真的转发成功

改完配置后不要直接重启服务,先检查语法,避免配置错误导致服务起不来:

td-agent --dry-run -c /etc/td-agent/td-agent.conf

如果没有报错,再重载服务:

systemctl restart td-agent

然后向测试日志写入几行内容,观察输出文件:

echo "hello fluentd" >> /var/log/myapp/test.log
sleep 6
ls -l /var/log/td-agent/output/
cat /var/log/td-agent/output/*.log

如果能在输出文件里看到 hello fluentd,说明采集和转发链路已经通了。
如果输出目录没有文件,按下面的顺序排查:

  • 查看 td-agent 自身日志:tail -f /var/log/td-agent/td-agent.log,关注是否有 Permission denied 或 no such file。
  • 确认 pos_file 路径可写,默认放在 /var/log/td-agent/ 下,权限应属于 td-agent 用户。
  • 检查 path 指向的文件是否被日志轮转(logrotate)改名,tail 插件依赖 pos_file 记录读取位置,轮转后需配合 rotate_wait 参数。

几个真实的踩坑点

缓冲目录写满导致丢日志。
Fluentd 的 file 和 forward 插件默认会在磁盘缓冲,如果下游服务长时间不可用,缓冲会持续增长。
建议在 buffer 段设置 total_limit_size,例如 total_limit_size 512MB,避免占满磁盘。

配置文件里用了不存在的插件。
Fluentd 插件需要单独安装,使用 td-agent-gem install fluent-plugin-xxx 安装后重启服务。
不要假设所有 @type 都内置。

时间字段格式不一致。
如果下游是 Elasticsearch,注意 @type elasticsearch 插件对时间字段的解析要求,必要时在 filter 段用 record_transformer 统一时间格式,否则会出现索引日期错乱。

常见疑问

Fluentd 和 Fluent Bit 该选哪个? 两者同源,Fluent Bit 更轻量、资源占用低,适合边缘节点或容器;
Fluentd 插件生态更丰富,适合中心聚合和复杂路由。
服务器上做日志统一收集,两者都常见,按资源预算和插件需求决定。

td-agent 和 fluentd 命令有什么区别? td-agent 是官方打包发行版,命令前缀为 td-agent,配置文件默认在 /etc/td-agent/。
手动 gem 安装的 fluentd 命令和路径不同,本文以 td-agent 为准,不要混用两套路径。

修改配置后一定要重启吗? Fluentd 支持通过 kill -HUP 或 systemctl reload td-agent 重载部分配置,但涉及插件加载和 source 变更时,重启更稳妥。
生产环境建议先 --dry-run 验证再重载。

日志转发延迟很高怎么办? 检查 flush_interval 设置,默认可能较长;
网络链路和下游写入速度也会影响。
先用小流量测试确认是采集端还是下游瓶颈,再调整缓冲和刷新参数。

收尾建议

完成本文的最小转发示例后,你可以把 match 段替换为 forward 插件指向远端 Fluentd,或换成 elasticsearch、kafka 等输出插件。
每次改配置都先 --dry-run,再重载,再写入测试数据验证,这套流程能帮你快速定位是配置问题还是下游问题。

分享到:
上一篇
服务器Loki教程:用Docker和Nginx搭建日志收集系统
下一篇
服务器Kafka教程:单机部署、启动验证与常见报错处理
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意