Fluent-bit Match规则异常:仅通配符*生效,指定Tag匹配无效
Fluent-bit Match规则异常:仅通配符*生效,指定Tag匹配无效
嘿,我帮你排查下这个问题哈!你遇到的情况是Fluent-bit里只有通配符*的Match规则生效,指定cw Tag的匹配完全没作用,我仔细看了你的配置和Lua脚本,主要有这几个关键问题:
第二个Filter的Match语法错误
你当前写的Match $tag cw是不符合Fluent-bit语法规范的哦!要指定匹配某个具体Tag,直接写Match cw就可以了。$tag是用来在输出配置或者其他场景中引用当前记录Tag的变量,但在Match指令里不需要加这个前缀,直接写目标Tag的值就能匹配对应记录。Lua脚本的冗余逻辑(虽不影响匹配,但可优化)
你的Lua脚本里把cw_log["tag"] = "cw"和s3_log["tag"] = "s3"放在了for k, v in pairs(record)的循环里,这会导致每次循环都重复赋值,完全没必要。可以把Tag赋值的代码移到循环外面,既高效又清晰:function process_record(tag, timestamp, record) print("Input tag: ", tag) print("Record: ", record["tag"]) local s3_log = {} local cw_log = {} -- 先复制原记录的所有字段 for k, v in pairs(record) do cw_log[k] = v s3_log[k] = v end -- 统一设置新Tag,无需循环重复赋值 cw_log["tag"] = "cw" s3_log["tag"] = "s3" print("S3 tag: ", s3_log["tag"]) print("CW tag: ", cw_log["tag"]) print("S3 Log: ", s3_log["log"]) print("CW Log: ", cw_log["log"]) return 2, timestamp, {s3_log, cw_log} end验证记录流转与日志排查
你已经开启了log_level debug,可以查看Fluent-bit的调试日志,里面会详细记录每条记录的Tag以及被哪个Filter匹配的过程,这样能直观确认修正后的第二个Filter是否成功捕获到带cwTag的记录。
备注:内容来源于stack exchange,提问作者Umair
相关产品推荐
相关产品推荐

