You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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输出配置即可实现合并:

  1. 核心修改:将use_put_object设为false
    关闭该参数后,Fluent Bit会在本地缓存多个chunk,直到满足total_file_size(100M)或upload_timeout(60s)的条件时,将所有缓存的chunk合并为单个文件上传至S3,从而实现多个输入文件的日志合并到同一个输出文件中。
  2. 可选优化:调整s3_key_format
    当前配置的s3_key_format包含秒级时间和UUID,会生成大量细粒度文件。可简化时间格式,比如改为/fluentbit/team/%Y.%m.%d.%H_%M.$UUID.gz,减少时间维度的拆分,让同一时间段的日志合并到更少的文件里。
  3. 注意本地存储容量
    修改后Fluent Bit会在本地缓存更多日志,需确保store_dir_limit_size 500m的设置足够覆盖缓存需求,避免因空间不足导致日志丢失。

内容的提问来源于stack exchange,提问作者Epsilon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:18:23