簡體   English   中英

logstash + elasticsearch:重新加載相同的數據

[英]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,我正在測試測試日志文件的過程中,步驟如下:

  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 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 2 428312038.如果您在查找sincedb文件時遇到問題並且未設置sincedb_path在配置文件中,可以在運行jar的用戶的主目錄中找到它。 如果這是您的用戶,您可以使用Windows鍵+運行 - >%USERPROFILE% - >確定輕松訪問它。

在部署到生產系統之前,一定要仔細進行修補和測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM