Fluentbit Filter插件Match正则支持及排除匹配实现问询
Fluentbit Filter Match 用法及限流排除需求解答
问题1:Match仅支持基础通配符还是具备完整正则表达式支持?
Fluentbit 的 Match 字段仅支持glob风格的基础通配符,不支持完整正则表达式语法。具体规则:
*:匹配任意字符,但不包含点号(.),用于匹配标签中的单个分段**:匹配任意字符,包含点号(.),用于跨分段匹配
你尝试使用的 (?!xyz) 是正则表达式的负向前瞻语法,不属于glob通配符范畴,因此配置无法生效。
问题2:能否在throttle插件中实现排除特定part2值的需求?
可以实现,但需要借助其他插件配合完成,以下是两种可行方案:
方案1:record_modifier + grep 前置过滤
先从标签提取part2字段,通过grep排除目标日志后再应用限流:
# 1. 从标签中提取part2字段到日志记录 [FILTER] Name record_modifier Match part1.*.*.part4 Record part2 ${tag_parts[1]} # 2. 排除part2等于xyz的日志 [FILTER] Name grep Match part1.*.*.part4 Exclude part2 ^xyz$ # 3. 对过滤后的日志应用限流 [FILTER] Name throttle Match part1.*.*.part4 Rate 1 Window 300 Interval 1s
方案2:rewrite_tag 标记目标日志
为符合条件的日志添加新标签,再针对新标签应用限流:
# 定义标签解析器,拆分标签为各分段 [PARSER] Name tag_parser Format regex Regex ^(?<part1>[^\.]+)\.(?<part2>[^\.]+)\.(?<part3>[^\.]+)\.(?<part4>[^\.]+)$ # 为part2≠xyz的日志添加新标签 [FILTER] Name rewrite_tag Match part1.*.*.part4 Parser tag_parser Rule $part2 ^(?!xyz)$ throttle_target.$TAG true Emit_Record true # 对带有新标签的日志应用限流 [FILTER] Name throttle Match throttle_target.* Rate 1 Window 300 Interval 1s
内容的提问来源于stack exchange,提问作者avp
相关产品推荐
相关产品推荐

