[英]logstash + elasticsearch : reloads the same data
管理以獲取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
}
}
數據存儲在索引logstash-2013.12.xx下的ES中
但是,如果我重新啟動logstash,讓我們說第二天 - 將相同的數據重新加載到新索引中。 即使我再次重新啟動,文檔計數也會在索引中翻倍。
似乎logstash重新讀取數據,ES也復制文檔。
有沒有辦法不在logstash中重新加載或不在ES中重復或同時執行。
我也使用Logstash 1.3.3來解決這個問題。 關於Logstash Jira的相關錯誤報告是LOGSTASH-429文件輸入 - .sincedb文件在Windows上被破壞 。 Boyd Meier也創建了一個補丁。
這個補丁也已被拉入Jordan Sissel的ruby-filewatch git存儲庫,以便包含在更高版本中,但它還沒有進入。
問題來自使用文件inode的Logstash,該文件始終在Windows上返回0。 Boyd Meier使用文件ID獲取文件的標識符以繞過該問題。 在從卷中刪除文件之前,此文件ID保持不變。
如果你很樂意做一些補丁,你可以從Jordan Sissel的ruby-filewatch git存儲庫中修改。 對於我剛剛修補的1.3.3,我正在測試測試日志文件的過程中,步驟如下:
require "java/JRubyFileExtension.jar" if defined? JRUBY_VERSION
require "java/JRubyFileExtension.jar" if defined? JRUBY_VERSION
現在,當您針對多個日志文件運行它時,您會發現sincedb包含多個條目,條目顯示類似於1717916447-2604966-851968 0 2 428312038.如果您在查找sincedb文件時遇到問題並且未設置sincedb_path在配置文件中,可以在運行jar的用戶的主目錄中找到它。 如果這是您的用戶,您可以使用Windows鍵+運行 - >%USERPROFILE% - >確定輕松訪問它。
在部署到生產系統之前,一定要仔細進行修補和測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.