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