Fluent-Bit 1.6.0中rewrite-tag过滤器无输出挂起问题求助
问题诊断与修复方案
看起来你遇到的问题是rewrite_tag过滤器没有正确生成新事件,导致stdout输出插件无数据可输出。结合Fluent-Bit 1.6.0的特性,我帮你定位到两个关键原因:
1. 嵌套JSON字段的引用语法错误
在Fluent-Bit 1.6.0版本中,访问嵌套JSON字段的正确方式是使用点号(.),而不是你配置里写的$sub['s1']['s2']这种数组下标式语法。这个语法错误会直接导致rewrite_tag的规则匹配失败——过滤器识别不出你要引用的sub.s1.s2字段,自然无法生成符合from.*规则的新标签,最终没有事件流到输出插件。
2. rewrite_tag的事件流转逻辑需要注意
rewrite_tag的工作机制是:匹配到符合规则的事件后,会生成带新标签的事件并通过指定的Emitter_Name重新注入处理流程,同时原始事件会被丢弃。如果规则匹配失败,就不会有任何新事件产生,自然看不到输出。
修复后的完整配置
把嵌套字段的引用改成点号语法,修改后的配置如下:
[SERVICE] Flush 1 Log_Level info [INPUT] NAME dummy Dummy {"tool": "fluent", "sub": {"s1": {"s2": "bit"}}} Tag test_tag [FILTER] Name rewrite_tag Match test_tag Rule $tool ^(fluent)$ from.$TAG.new.$tool.$sub.s1.s2.out false Emitter_Name re_emitted [OUTPUT] Name stdout Match from.*
额外验证小技巧
- 可以把
Log_Level改成debug,用fluent-bit -c example.conf -v启动,查看调试日志里是否有rewrite_tag的匹配记录,确认规则是否生效; - 临时加一个匹配
test_tag的stdout输出,先验证原始的Dummy输入是否能正常发送事件,排除输入端的问题。
这样修改后,rewrite_tag就能正确生成新标签from.test_tag.new.fluent.bit.out,你的stdout输出插件就能匹配到事件并打印内容了。
内容的提问来源于stack exchange,提问作者AnujAroshA
相关产品推荐
相关产品推荐

