Logstash
修復logstash檢查點文件
我們
OutOfMemoryException
的 logstash 5.6.6 中有一個導致checkpoint. head
文件無法正確寫入的問題:ls -l /var/lib/logstash/queue/main/ total 266424 -rw-r--r-- 1 logstash logstash 34 Mar 1 20:33 checkpoint.55779 -rw-r--r-- 1 logstash logstash 0 Mar 1 20:34 checkpoint.head -rw-r--r-- 1 logstash logstash 262144000 Mar 1 20:33 page.55779 -rw-r--r-- 1 logstash logstash 262144000 Mar 1 20:34 page.55780
有沒有辦法修復
checkpoint.head
或至少將頁面 55779 載入到管道中,這樣我們就不會失去幾千個事件?
我們最終查看了一個工作
checkpoint.head
文件並根據我們的需要對其進行了修改。在十六進制中,文件可能如下所示:00000000: 0001 0000 d9e4 0000 d9e3 0000 0000 0000 ................ 00000010: 0000 0000 0000 0000 0000 0000 0000 1855 ...............U 00000020: 2b6b 0a +k.
需要修改的有:
- 字節 3-6:32 位有符號整數:最新頁面文件的數量
- 字節 7-10:32 位有符號整數:最低未處理頁面文件的數量
- 字節 31-34:32 位有符號整數:雜湊值
所有數字都是大端。
要獲取雜湊,只需設置頁面文件的值並啟動 logstash。它將向您顯示一條錯誤消息,其中提到了預期的和實際的雜湊值,將值替換為該
checkpoint.head
錯誤消息中的實際值。