logstash 文件输入 glob 不工作

logstash file input glob not working

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

我有一个非常简单的配置,它只读取日志文件并将它们转储到标准输出。它适用于单个文件和文件列表(数组),但如果我使用匹配相同文件的 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}

没有其他事情发生。

我正在使用:

您显然遇到了 sincedb 问题。 Logstash 将日志文件的最后位置保存在名为 sincedb 的文件中。 sincedb 基于日志文件的 inode,因此重命名或使用 globs 没有任何效果。

尝试此输入进行测试:

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

来自最新文档:

Path of the sincedb database file (keeps track of the current position of monitored log files) that will be written to disk. The default will write sincedb files to some path matching $HOME/.sincedb* NOTE: it must be a file path and not a directory path

有关更多信息,请查看相关问题,例如 this