0

我成功地使用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 拾取复制的文件?它使用什么文件统计属性来检查文件是否是新文件?

谢谢

4

1 回答 1

0

您可以从 Logstash 切换到Apache Flume:Flume 有一个Spooling-Directory-Source(Logstash 的输入 {})和一个Elasticsearch-Sink(Logstash 的输出 {})。Spooling-Directory-Source 正是您正在寻找的,afaics。

如果您不想重写 Logstash-filter{},您可以使用 Flume 收集文件并将它们汇集到一个文件中(请参阅File-Roll-Sink)并让 Logstash 使用其中的事件。

请注意,Flume 的假脱机目录中的文件操作必须是原子的。不要更改已处理的文件或附加到它。

于 2015-08-12T14:52:45.907 回答