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

Fluent Bit仅*匹配生效问题排查及日志路由配置调整求助

问题分析与解决方案

核心需求:CloudWatch输出过滤含unwatedtext的日志,S3输出保留全部日志;当前核心问题是Fluent Bit中除*外的Match规则不生效,根源在于你混淆了Fluent Bit路由tag和日志记录内的字段,同时配置语法存在错误。

现有配置的核心错误

  1. Lua脚本中修改的是日志记录内的tag字段,而非Fluent Bit用于路由的全局tag,后续Match规则无法识别这个字段。
  2. 过滤器的Match语法错误(比如Match $tag cw),Fluent Bit的Match参数仅匹配路由tag,不支持直接匹配记录内的字段。
  3. rewrite_tag过滤器配置逻辑错误,未基于正确的路由tag或字段进行规则匹配。

正确配置方案

修正后的Lua脚本(append_tag.lua)

直接为复制出的两条日志设置不同的路由tag,而非修改记录内字段:

function process_record(tag, timestamp, record)
    -- 复制原始日志,生成两条记录并分别指定路由tag
    return 2, timestamp, {
        {record, "s3_log"},  -- 这条路由到S3,保留全部日志
        {record, "cw_log"}   -- 这条路由到CloudWatch,后续做过滤处理
    }
end

完整Fluent Bit配置文件

[SERVICE]
    flush 1
    daemon off
    log_level debug

# 输入模块(log_router默认的ecs_logs输入,指定明确的路由tag)
[INPUT]
    Name                ecs_logs
    Tag                 raw_logs

# Lua过滤器:拆分日志为S3和CloudWatch两个路由分支
[FILTER]
    Name          lua
    Match         raw_logs
    script        /append_tag.lua
    call          process_record

# 仅对CloudWatch分支的日志应用grep过滤,移除含unwatedtext的记录
[FILTER]
    Name          grep
    Match         cw_log
    Exclude       log unwatedtext

# 仅对CloudWatch分支的日志应用modify过滤,删除冗余字段(按需调整字段名)
[FILTER]
    Name          modify
    Match         cw_log
    Remove        redundant_field1
    Remove        redundant_field2

# S3输出:匹配s3_log路由,保留全部原始日志
[OUTPUT]
    Name                s3
    Match               s3_log
    bucket              your-s3-bucket-name
    region              af-south-1
    s3_key_format       /ecs/logs/%Y/%m/%d/%H/%M/%S.log
    log_key             log
    auto_create_bucket  On

# CloudWatch输出:匹配cw_log路由,仅输出过滤后的日志
[OUTPUT]
    Name                cloudwatch_logs
    Match               cw_log
    log_key             log
    region              af-south-1
    log_group_name      /ecs/log
    log_stream_prefix   fluent-bit-
    auto_create_group   On
    log_format          json/emf

关键修正说明

  1. 路由tag精准控制:通过Lua脚本直接为每条复制的日志分配独立路由tag,后续过滤器和输出模块可以精准匹配对应分支,避免全局*导致的范围污染。
  2. 过滤逻辑隔离:grep和modify过滤器仅作用于cw_log路由的日志,完全不影响S3分支的原始日志。
  3. 输入tag明确化:为INPUT设置明确的raw_logs tag,避免用*导致逻辑混乱,让整个路由流程更清晰。

验证方式

  1. 查看Fluent Bit的debug日志,确认日志被拆分为s3_log和cw_log两个路由tag。
  2. 检查CloudWatch Logs中是否无unwatedtext相关日志,S3桶中是否保留了所有原始日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:55:16