Fluent Bit rewrite_tag适配JSON数组时标签重写失效求助
问题根因
你的rewrite_tag规则确实是正则匹配逻辑错误导致不生效:
你配置的正则规则^([a-z]+)-([0-9]+)$要求匹配的字符串是「小写字母序列 + 横杠 + 数字序列」的格式,比如tenant-1才能匹配成功,但你实际生成的tenantid字段值为tenant1,中间没有横杠,完全不符合正则规则,因此重写标签逻辑不会触发。
修复方案
修改rewrite_tag过滤器的Rule配置即可,以下是两种可用的配置方案:
方案1:适配你当前tenantid的格式(字母+数字无分隔符)
[FILTER] Name rewrite_tag Match * Rule $tenantid ^([a-z]+[0-9]+)$ from.$1 false Emitter_Name re_emitted
方案2:通用兼容所有非空tenantid值(更推荐,适配后续tenantid格式变化)
[FILTER] Name rewrite_tag Match * Rule $tenantid ^(.+)$ from.$1 false Emitter_Name re_emitted
注意事项
- 不推荐直接在目标标签中写
from.$tenantid,部分旧版本Fluent Bit不支持在rewrite_tag的目标标签位直接引用字段名,用正则捕获组的$1调用匹配到的内容兼容性更好。 - 如果你不需要保留原始
tenant标签的事件,可以将Rule末尾的false改为true,重写标签后会自动丢弃原始事件,避免重复输出。
内容的提问来源于stack exchange,提问作者Subhankar
相关产品推荐
相关产品推荐

