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

Filebeat输入场景下Logstash端随机丢失日志且报BufferOverflow等错误求助

问题原因分析
  • 磁盘空间耗尽:报错日志中明确多次出现No space left on device (IOError)错误,Logstash的file输出插件在执行fd.write(chunk)写入操作时,目标日志存储分区剩余空间不足以容纳当前待写入的日志块,直接导致写入失败,对应事件丢失,这是触发问题的核心原因。
  • JRuby IO缓冲区溢出:报错栈中的java.nio.BufferOverflowException是磁盘空间不足的衍生问题。你使用的logstash-output-file 4.0.1版本,写入逻辑为将批量编码后的日志块先暂存到JRuby IO缓冲区再统一刷盘,当磁盘无法写入导致缓冲区数据无法清空、同时新的待写入数据持续累积超过缓冲区容量上限时,就会触发缓冲区溢出异常,进一步导致当前批次日志全部丢弃。
  • 旧版本插件无容错逻辑:从你贴出的源码可以看到,4.0.1版本的file输出插件没有对IO异常做捕获处理,也没有配置失败重试、写入死信队列的兜底逻辑,一旦写入失败,当前批次的所有日志块会直接被丢弃,无任何找回路径,最终表现为随机丢失日志。
修复方案
  • 优先扩容日志存储分区的磁盘容量,或调整日志归档、清理策略,保证目标存储路径所在分区始终预留至少10%的剩余空间,避免空间耗尽问题。
  • 将logstash-output-file插件升级至4.1.0及以上版本,该版本修复了缓冲区溢出漏洞,同时新增了IO异常重试逻辑,可大幅降低偶发IO错误导致的丢日志概率。
  • 开启Logstash死信队列(DLQ)功能,配置写入失败的事件自动存入死信队列,后续可对死信队列中的数据进行二次消费,避免数据永久丢失。

内容的提问来源于stack exchange,提问作者Bandari Hema

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:27:04