Fluent Bit多日志文件能否合并为单个S3输出文件?
问题
使用Fluent Bit采集目录下的多个日志文件,经过解析过滤后发送至S3存储桶,目前每个源文件对应桶中一个单独的输出文件,而非合并后的文件。请问是否可以将多个输入文件合并为单个输出文件,还是这就是Fluent Bit缓冲区刷新的默认行为?
当前配置
[SERVICE] Daemon Off Flush 1 Log_Level warn Parsers_File parsers.conf Parsers_File custom_parsers.conf Health_Check Off HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 storage.path /tmp/fluentbit/ storage.max_chunks_up 128 [INPUT] Name tail Path /var/log/containers/*.log multiline.parser docker, cri Tag kube.* storage.type filesystem Mem_Buf_Limit 10MB Buffer_Chunk_Size 2M Buffer_Max_size 256M Skip_Long_Lines On Skip_Empty_Lines On [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off Merge_Log_Key msg-json K8S-Logging.Parser On K8S-Logging.Exclude On Cache_Use_Docker_Id On [FILTER] Name nest Match kube.* Operation lift Nested_under kubernetes Add_prefix kubernetes_ [FILTER] Name nest Match kube.* Operation lift Nested_under kubernetes_labels Add_prefix kubernetes_labels_ [FILTER] Name aws Match * imds_version v1 az true ec2_instance_id true ec2_instance_type true private_ip true account_id true hostname true vpc_id true [OUTPUT] Name s3 Match * bucket <bucket name redacted> region us-east-1 total_file_size 100M upload_timeout 60s use_put_object true compression gzip store_dir_limit_size 500m s3_key_format /fluentbit/team/%Y.%m.%d.%H_%M_%S.$UUID.gz static_file_path On
解答
为什么当前每个源文件对应单独输出文件
这不是Fluent Bit缓冲区刷新的默认行为,而是由配置中的use_put_object true参数导致的:
- 当
use_put_object设为true时,Fluent Bit会将每个缓冲区chunk直接以单个S3对象上传; - 而
tail输入插件会为每个监控的日志文件创建独立的缓冲区chunk流,每个文件的日志会被拆分为多个固定大小(当前配置为2M)的chunk,最终每个chunk对应一个S3输出文件,呈现出每个源文件对应单独输出文件的效果。
如何合并多个输入文件为单个输出文件
通过修改S3输出配置即可实现合并:
- 核心修改:将
use_put_object设为false
关闭该参数后,Fluent Bit会在本地缓存多个chunk,直到满足total_file_size(100M)或upload_timeout(60s)的条件时,将所有缓存的chunk合并为单个文件上传至S3,从而实现多个输入文件的日志合并到同一个输出文件中。 - 可选优化:调整
s3_key_format
当前配置的s3_key_format包含秒级时间和UUID,会生成大量细粒度文件。可简化时间格式,比如改为/fluentbit/team/%Y.%m.%d.%H_%M.$UUID.gz,减少时间维度的拆分,让同一时间段的日志合并到更少的文件里。 - 注意本地存储容量
修改后Fluent Bit会在本地缓存更多日志,需确保store_dir_limit_size 500m的设置足够覆盖缓存需求,避免因空间不足导致日志丢失。
内容的提问来源于stack exchange,提问作者Epsilon
相关产品推荐
相关产品推荐

