Logstash 7.17.0:如何基于文件时间变更加载输入文件
解决Logstash 7.17.0读取时间戳变更但大小不变的文件问题
针对你遇到的场景(每日生成内容、大小一致但时间戳更新的文件无法被Logstash读取),可以通过调整File插件的配置参数实现需求,核心思路是让Logstash更敏感地检测文件时间戳变化,并在文件更新时重新读取。
关键配置示例
在你的Logstash管道输入段中,添加/修改以下File插件配置:
input { file { path => "/your/target/file/path/*.log" # 替换为你的文件路径/匹配规则 stat_interval => 1 discover_interval => 10 close_older => 1 ignore_inode => true start_position => "beginning" sincedb_write_interval => 10 } }
参数说明
stat_interval: 设置为1秒,让Logstash每秒检查一次文件状态(包括修改时间),确保及时捕捉时间戳变更discover_interval: 每10秒扫描一次目标路径,快速发现新生成或更新的文件close_older: 文件1分钟无修改则关闭句柄,避免Logstash持续占用文件,确保后续时间戳变更时能重新识别并读取ignore_inode: 忽略文件inode标识,仅通过路径+修改时间判断文件变化,适配文件被覆盖(inode不变但时间戳更新)的场景start_position: 设为beginning,确保重新识别文件时从开头完整读取内容sincedb_write_interval: 每10秒写入一次sincedb状态文件,避免状态丢失导致重复读取或漏读
临时重置方案(测试用)
如果之前的sincedb记录导致文件无法触发读取,可以手动删除Logstash的sincedb文件(默认路径为$HOME/.sincedb_*或指定的sincedb_path),重置文件跟踪状态。
内容的提问来源于stack exchange,提问作者user3141191
相关产品推荐
相关产品推荐

