如何排查 Logstash File 输入插件不读文件的问题?

Logstash file 插件不采集日志?按本文清单排查:开启 debug 日志、检查路径权限、处理 sincedb 偏移文件、确认 start_position,并了解观测云 DataKit 更省心的替代方案。

最佳实践
如何排查 Logstash File 输入插件不读文件的问题?封面

排查主线:先用 --log.level debug 看插件到底在做什么,然后依次检查四件事——文件路径是否正确、Logstash 进程是否有读权限、sincedb 偏移文件是否过期、start_position 是否符合预期。90% 的"不采集"问题都出在这四项上。

1. 开启 debug 日志

bin/logstash --log.level debug

debug 输出会显示 file 插件发现的文件、读取进度等信息,是定位问题的第一手资料。

2. 检查路径与权限

ls -l /path/to/your/log/file.log

确认配置里的 path 拼写无误、通配符能匹配到文件,并且 Logstash 运行用户对该文件及其上级目录有读权限。

3. 处理 sincedb 文件

file 插件通过 sincedb 文件记录每个文件的读取偏移。如果它记录的偏移已经超过当前文件大小(比如日志轮转后),新内容就不会被读取。排查办法:

  • 测试时设置 sincedb_path => "/dev/null",强制每次从头读;
  • 或手动删除 sincedb 文件后重启 Logstash。

4. 检查 start_position

file {
  path => "/path/to/your/log/file.log"
  start_position => "beginning"
}

start_position 默认值是 end(只读新增内容),对已有历史内容的文件会表现为"什么都不采"。测试阶段建议改成 beginning

观测云对照

如果不想维护 sincedb、start_position 这些细节,观测云 DataKit 的日志采集功能可以直接替代 file 插件:指定文件路径即可实时采集上报,自动处理轮转和偏移管理,日志在观测云控制台即可检索分析,还支持用 Pipeline 做解析清洗。

常见问题(FAQ)

Q:sincedb 文件在哪?
A:默认在 Logstash 的 data 目录(path.data)下的 plugins/inputs/file/ 里,文件名以 .sincedb_ 开头;也可用 sincedb_path 显式指定。

Q:日志轮转后 Logstash 还在读旧文件?
A:file 插件按 inode 跟踪文件。轮转后若配置了 file_completed_action 或合理的 close_older/ignore_older,插件会放开旧文件句柄并发现新文件。

Q:通配符路径能递归吗?
A:可以,用 ** 匹配多级目录,如 /var/log/**/*.log

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台