logstash文件输入glob不工作

时间:2015-09-23 14:30:18

标签: logstash glob

我开始探索logstash,这可能是一个新手问题,但据我所研究,这应该是有效的,但事实并非如此。

我有一个非常简单的配置,它只读取日志文件并将它们转储到stdout。它适用于单个文件和文件列表(数组),但如果我使用匹配相同文件的glob,则不会发生任何事情。

我用一个简短的ruby脚本测试了glob,它列出了正确的文件。

这是我的配置:

input {
    file {
        path => "/home/lpacheco/*.log"
        start_position => "beginning"
    }
}

output {
    stdout {}
}

如果我用--verbose运行,我会得到:

{:timestamp=>"2015-09-23T11:26:47.008000-0300", :message=>"Registering file input", :path=>["/home/lpacheco/*.log"], :level=>:info}
{:timestamp=>"2015-09-23T11:26:47.068000-0300", :message=>"No sincedb_path set, generating one based on the file path", :sincedb_path=>"/home/.sincedb_6da9e0c63851aa9d5840ba19efd196cb", :path=>["/home/lpacheco/*.log"], :level=>:info}
{:timestamp=>"2015-09-23T11:26:47.089000-0300", :message=>"Pipeline started", :level=>:info}

没有其他事情发生。

我正在使用:

  • logstash 1.5.4
  • OpenJDK运行时环境(IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
  • ruby​​ 1.9.3p484(2013-11-22修订版 43786)[i686-linux]

1 个答案:

答案 0 :(得分:3)

您显然面临sincedb - 问题。 Logstash将日志文件的最后位置保存在名为sincedb的文件中。 sincedb基于日志文件的inode,因此重命名或使用globs不会产生任何影响。

尝试此输入进行测试:

input {
    file {
        path => "/home/lpacheco/*.log"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}

来自最新文档:

  

sincedb数据库文件的路径(跟踪当前位置   受监视的日志文件)将写入磁盘。默认会   将sincedb文件写入匹配$ HOME / .sincedb的路径*注意:它   必须是文件路径而不是目录路径

有关详细信息,请查看相关问题,例如this