[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>