You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fluentd配置append=true时out_file插件未写入新事件是什么原因?

问题原因

这个问题是Fluentd 1.14.3版本在macOS平台下的典型兼容问题,结合你的配置,具体触发点有两个:

  1. 缓冲机制叠加:macOS系统的文件系统缓冲+Ruby 3.0的IO默认缓冲行为,即使配置了flush_mode immediate,写入操作也只是提交到了Fluentd进程内存缓冲和系统文件缓冲,没有立刻同步到磁盘,你用cat读取的是磁盘持久化后的文件内容,因此看不到新提交的事件。
  2. 配置缺失:当前配置没有开启out_file插件的sync参数,该参数会强制每次写入后调用fsync把所有缓冲落地到磁盘。

解决方案

可任选以下一种方案修复:

  • 方案1:在file输出配置段添加sync true参数,强制每次写入都刷盘,修改后配置如下:
<match hack.**>
  @type file
  path hack
  append true
  sync true
  <format>
    @type json
  </format>
  <buffer>
    flush_mode immediate
  </buffer>
</match>
  • 方案2:在buffer配置段添加timekey 1s参数,强制buffer按秒切分触发强制落盘,适合需要按时间严格切分日志的场景:
<match hack.**>
  @type file
  path hack
  append true
  <format>
    @type json
  </format>
  <buffer time>
    timekey 1s
    flush_mode immediate
  </buffer>
</match>
  • 方案3:升级Fluentd到1.14.4及以上版本,该版本已修复out_file插件append模式配合immediate flush时的写入不生效bug。

验证方法

修改配置重启Fluentd后再次提交两次测试请求,第二条数据正常出现在日志文件中即修复完成。如果临时需要查看未刷盘的数据,可以给Fluentd进程发送USR1信号强制刷盘:kill -USR1 <Fluentd进程ID>,之后再查看日志文件即可看到所有写入的事件。

内容的提问来源于stack exchange,提问作者Jingguo Yao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:02