Filebeat урожай повернутых файлов - PullRequest
0 голосов
/ 05 марта 2020

Описание проблемы:

У меня относительно большой / var / log / messages файл, который вращается. Список файлов выглядит следующим образом:

ls -l /var/log/messages*
-rw-------. 1 root 928873050 Mar  5 10:37 /var/log/messages
-rw-------. 1 root 889843643 Mar  5 07:49 /var/log/messages.1
-rw-------. 1 root 890148183 Mar  5 07:50 /var/log/messages.2
-rw-------. 1 root 587333632 Mar  5 07:51 /var/log/messages.3

Мой фрагмент конфигурации filebeat:

filebeat.prospectors:
  - input_type: log
    paths:
      - /var/log/messages
      - /var/lib/ntp/drift
      - /var/log/syslog
      - /var/log/secure
    tail_files: True

С несколькими / var / log / messages * файлами, как показано над каждым время перезапуска файла начинается, он начинает собирать и загружать старые файлы журнала. Когда у меня есть только один файл / var / log / messages , эта проблема не наблюдается.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Похоже, что системные плагины и плагины безопасности были включены в конфигурации. Это вызвало загрузку повернутых файлов системного журнала.

0 голосов
/ 05 марта 2020

В Linux системах Filebeat отслеживает файлы не по имени файла, а по номеру инода, который не изменяется при переименовании. Это из Filebeat документации .

Харвестер отвечает за открытие и закрытие файла, что означает, что дескриптор файла остается открытым во время работы комбайна. Если файл удаляется или переименовывается во время его сбора, Filebeat продолжает читать файл. Это побочным эффектом является то, что место на вашем диске зарезервировано, пока комбайн не закроется. По умолчанию Filebeat сохраняет файл открытым, пока не будет достигнут close_inactive.

Это означает, что именно так и происходит в вашем случае

  1. Считывает текущие сообщения файл (inode # 1) и отслеживает его номер inode в реестре.
  2. Filebeat останавливается, но файл messages повернут в messages.1 (inode # 1) и новый messages (inode # 2) файл создан.
  3. Когда Filebeat перезапустится, он начнет читать
    • messages.1 (inode #) 1) файл, из которого он остановился
    • messages (inode # 2), поскольку он соответствует настроенному вами пути (/ var / log / messages)

Если вы планируете собрать все сообщения file, даже повернутые, то было бы лучше настроить путь как

/var/log/messages*

...