我开始探索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}
没有其他事情发生。
我正在使用:
答案 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。