我成功地使用logstash解析了json格式的事件,并将它们发送到elasticsearch。每个事件都在一个单独的文件中创建。每个扩展名为.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拾取复制的文件?它使用什么文件状态属性来检查文件是否为新文件?
谢谢
发布于 2015-08-12 14:52:46
你可以从Logstash切换到Apache Flume:Flume有一个Spooling-Directory-Source (Logstash的输入{})和一个Elasticsearch-Sink (Logstash的输出{})。Spooling-Directory-Source就是你要找的。
如果你不想重写你的Logstash-filter{},你可以使用Flume来收集文件并将它们合并到一个文件中(参见File-Roll-Sink),让Logstash使用其中的事件。
请注意,Flume的假脱机目录中的文件操作必须是原子的。不要更改已处理的文件或将其附加到该文件。
https://stackoverflow.com/questions/31962911
复制