[Logstash] 如何找到並清空logstash-input-file插件的文件監控記錄(sincedb)?

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


警告:被刪除的數據難以恢復,謹慎操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章