Назад | Перейти на главную страницу

Восстановить файл контрольной точки 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 с фактическим значением из этого сообщения об ошибке.