我成功使用logstash来解析json格式化事件并将它们发送到elasticsearch。每个事件都在seprate文件中创建。每个文件一个事件,扩展名为.json。
当我使用“vi mydoc.json”创建文件时,Logstash正在正确地拾取文件,粘贴内容并保存。但是,如果我cp或mv文件,它就不会启动。
目标是自动将文件复制到目录,然后通过logstash解析它们。 每个文件都有不同的名称和大小。我试着查看logstash代码,找出它使用的属性但无法找到相关代码。我也尝试删除.sincedb文件,但也没有帮助。
输入配置如下:
input {
file {
path => "/opt/rp/*.json"
type => "tp"
start_position => "beginning"
stat_interval => 1
}
}
如何让logstash获取复制的文件?它使用什么文件stat属性来检查文件是否是新文件?
由于
答案 0 :(得分:0)
您可以从Logstash切换到Apache Flume:Flume有Spooling-Directory-Source(Logstash的输入{}}和Elasticsearch-Sink(Logstash的输出{})。 Spooling-Directory-Source正是您所寻找的,afaics。
如果您不想重写Logstash-filter {},可以使用Flume收集文件并将它们存入一个文件(请参阅File-Roll-Sink),然后让Logstash使用它来记录事件。
请注意,Flume的假脱机目录中的文件操作必须是原子的。请勿更改已处理的文件或附加到该文件。