修复 logstash 检查点文件

修复 logstash 检查点文件

我们的 logstash 5.6.6 中有一个问题OutOfMemoryException,导致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 加载到管道中,以便我们不会丢失几千个事件?

答案1

我们最终查看了一个工作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为该错误消息中的实际值。

相关内容