logstash + elasticsearch:重新加载相同的数据

设法获得logstash(1.3.1)以将数据发送到elasticsearch(0.9.5)。

我的logstash conf文件设置是

input {

file {

path => ["D:/apache-tomcat-7.0.5/logs/*.*"]

}

}

output {

stdout { }

elasticsearch_http {

host => "localhost"

port => 9200

}

}

数据存储在ES中的索引logstash-2013.12.xx下

但是,如果我重新启动logstash,请说第二天-将相同的数据重新加载到新索引中。即使我再次重新启动,索引中的文档计数也会加倍。

好像logstash重新读取数据,ES也在复制文档。

有没有一种方法可以不重新装入logstash或在ES中不重复或两者都不做。

回答:

我也遇到了Logstash 1.3.3的问题。Logstash Jira上的相关错误报告是LOGSTASH-429 File Input-

Windows上的.sincedb文件已损坏。Boyd

Meier还创建了一个补丁。

该补丁也已经被拉入Jordan Sissel的ruby-filewatch git存储库中,以便包含在以后的版本中,但是它尚未发布。

问题来自Logstash,使用文件inode在Windows上始终返回0。博伊德·迈耶(Boyd

Meier)使用文件ID获取文件的标识符,以绕过该问题。从卷中删除文件之前,此文件ID保持不变。

如果您愿意进行一些修补,则可以从Jordan Jordan Sissel的ruby-filewatch

git存储库中修补更改。对于我刚刚打过补丁的1.3.3,并且正在针对测试日志文件进行测试的步骤如下:

  1. 从Github下载ruby-filewatch zip文件:Jordan Sissel的ruby-filewatch git存储库
  2. 将下载的zip文件解压缩到新目录
  3. 我必须对Ruby-filewatch \ lib \ filwatch \ tail.rb文件进行更改->第10行,其内容要求为“ JRubyFileExtension.jar”。我必须更改为要求使用“ java / JRubyFileExtension.jar”,否则我将收到一个错误,它在尝试读取文件时无法找到jar文件。作为参考,使整行显示为:require "java/JRubyFileExtension.jar" if defined? JRUBY_VERSION
  4. 在7-Zip中打开logstash-1.3.3-flatjar.jar文件
  5. 将java目录从ruby-filewatch拖放到7-Zip的根文件夹中
  6. 将所有文件从ruby-filewatch \ lib \ filewatch文件夹拖放到7-Zip中的filewatch文件夹中,覆盖所有现有文件

现在,当您对多个日志文件运行它时,您应该发现sincedb包含多个条目,并且这些条目的显示类似于1717916447-2604966-851968 0

2428312038。如果您在查找sincedb文件时遇到麻烦并且未设置sincedb_path在您的配置文件中,可以在运行jar的用户的主目录中找到它。如果您是您的用户,则可以使用Windows键+运行->%USERPROFILE%->确定轻松访问它。

与往常一样,打补丁时要小心,并在部署到生产系统之前进行全面测试。

以上是 logstash + elasticsearch:重新加载相同的数据 的全部内容, 来源链接: utcz.com/qa/427096.html

回到顶部