[Fluentd] Как распаковать файлы во Fluentd

Я пытаюсь обработать файлы журналов с расширением.gz на fluentd с помощью плагина cat_sweep, но попытка не удалась. Как показано в приведенном ниже конфиге, я пытаюсь обработать все файлы в / opt / logfiles / * location. Однако, когда формат файла.gz, cat_sweep не может обработать файл и начинает удалять файл, но если я разархивирую файл вручную в / opt / logfiles / location, cat_sweep сможет обработать файл.

<source>
   @type cat_sweep
   file_path_with_glob /opt/logfiles/*
   format none
   tag raw.log
   waiting_seconds 0
   remove_after_processing true
   processing_file_suffix .processing
   error_file_suffix .error
   run_interval 5
</source>

Так что теперь мне нужен плагин, который может распаковать данный файл. Я попытался найти плагины, которые могут разархивировать ZIP-файл. Я подошел ближе, когда узнал о плагине, который действует как терминал, где я могу использовать что-то вроде gzip -d file_path

Ссылка на плагин:

http://docs.fluentd.org/v0.12/articles/in_exec

Но проблема, которую я вижу здесь, заключается в том, что я не могу отправить путь к файлу, который нужно распаковать во время выполнения.

Может кто-нибудь помочь мне с некоторыми указателями?

1 ответ

Решение

Глядя на ваше требование, вы все равно можете достичь его с помощью модуля in_exec. Вам нужно просто создать сценарий оболочки, который принимает путь для поиска файлов.gz и шаблон с подстановочными знаками для соответствия именам файлов. А внутри сценария оболочки вы можете разархивировать файлы внутри folder_path, которые были переданы с заданным шаблоном подстановки. По сути, ваша оболочка должна выглядеть так:

sh unzip.sh <folder_path_to_monitor> <wildcard_to_files>

И используйте приведенную выше команду в теге in_exec в вашей конфигурации. И ваш конфиг будет выглядеть так:

<source>
  @type exec
  format json
  tag unzip.sh
  command sh unzip.sh <folder_path_to_monitor> <wildcard_to_files>
  run_interval 10s
</source>
Другие вопросы по тегам