2

为什么logstash每次重新启动时都会导入相同的文件?

我在同一个文件夹中有 3 个不同的日志文件(本例中为 C:/temp/)。每次我重新启动logstash,文件都会再次被导入!这是预期的吗?

logstash.conf

input { 
  file { 
    type => "app" 
    path => [ "C:/temp/*.log" ] 
    codec => "json" 
  }
}

output { 
  stdout { codec => rubydebug }
  elasticsearch { embedded => true }
}

这是我用来运行 logstash 的命令(我使用的是 Windows):

java -jar logstash-1.3.3-flatjar.jar agent -f logstash.conf -- web

我知道每次重新启动时都会导入文件,因为它们正在输出到控制台,并且在通过 kibana 浏览日志时,我可以看到多次出现相同的日志消息。

4

1 回答 1

3

回答我自己的问题:

事实上,这是意料之外的,这是 Windows 的一个已知错误。您可以在此处此处查看(引用如下)。

在 Linux 和 Windows 上进行了几次测试后,我意识到如果在 Windows 上(重新)启动 logstash,所有日志都会重新从头开始解析。如果我设置了 start_position 或 since_db 路径,或者两者的组合,该设置将被忽略。

更新

我通过手动修补logstash-1.3.3-flatjar.jar修复了这个问题,其中 edwinf 对ruby ​​-filewatch进行了一些更改。如果你想做同样的事情:

  1. 打开https://github.com/jordansissel/ruby-filewatch/tree/master/lib/filewatch下载buftok.rb、tail.rb、watch.rb和winhelper.rb
  2. 使用任何 zip 文件编辑器打开 logstash-1.3.3-flatjar.jar 并将下载的文件放入名为“filewatch”的文件夹中(替换原始文件)
  3. https://github.com/jordansissel/ruby-filewatch/tree/master/java下载JRubyFileExtension.jar
  4. 将此文件放在logstash-1.3.3-flatjar.jar的根目录下(同时使用 zip 文件编辑器打开它)。
  5. 完毕。当然,必须重新运行 Logstash :)

可以在https://github.com/jordansissel/ruby-filewatch/pull/22找到修复此问题的拉取请求

于 2014-02-17T19:00:30.037 回答