天天看點

[Logstash] 如何找到并清空logstash-input-file插件的檔案監控記錄(sincedb)?Logstash版本問題解決

Logstash版本

2.4.1

問題

在Logstash中,已經通過logstash-input-file插件導入了一些本地日志檔案。現在需要重新導入這些日志檔案,但是logstash-input-file插件會自動忽略之前已經讀取的檔案。要想重新導入之前的檔案,隻能清空檔案監控記錄。

那麼,檔案監控記錄到底在哪裡?

在官方插件說明文檔中,關于檔案監控記錄(sincedb)的說明:

 The plugin keeps track of the current position in each file byrecording it in a separate file named sincedb. Thismakes it possible to stop and restart Logstash and have it pick up where itleft off without missing the lines that were added to the file while Logstashwas stopped

......

By default, the sincedb file is placed in the home directory of the user running Logstash with a filename basedon the filename patterns being watched.

可見,sincedb預設儲存在目前使用者的Home目錄下。 但是,在目前使用者的Home目錄下執行ls指令,沒有找到所謂的sincedb檔案?

解決

1.sincedb檔案是隐藏檔案,需要在Home目錄下執行顯示所有檔案的指令,才能顯示出來:

sudo ls –a
           

檔案名形如:.sincedb_647fd4a05bc6792451e1013e54ce1bac

2.用rm指令删除這些.sincedb_開頭的檔案即可。

rm .sincedb_647fd4a05bc6792451e1013e54ce1bac
           

注意:

在執行删除操作之前,需要先關閉Logstash,否則Logstash會報錯。

3.重新啟動Logstash之前,要記得删除已經導入Elasticsearch的文檔。否則,當Logstash再次導入文檔後,ES中會出現重複的文檔。

參考資料:http://www.wklken.me/posts/2015/04/26/elk-for-nginx-log.html

警告:被删除的資料難以恢複,謹慎操作。