FluentD如何忽略pattern not match日志,仅转发匹配规则的日志到下游端点
FluentD 日志过滤配置调整方案
针对你需要仅转发含特定字符串日志、屏蔽不匹配日志警告的需求,调整后的配置及说明如下:
修改后完整配置
<source> @type tail path session.txt pos_file session.txt.pos tag sessionlog <parse> @type regexp # 修正正则大小写匹配问题,匹配日志中的小写clip字符串 expression ^\<#\>\s+(?<time>\w+/\w+/\w+\s+[:0-9]+)\s+(?<hostname>[-0-9A-Z]+)\s+(?<message>.*clip.*)$ # 关闭parse不匹配时的pattern not match警告日志 suppress_parse_error_log true </parse> </source> <!-- 可选:增加grep过滤层实现逻辑解耦,后续调整过滤规则无需修改parse正则 --> <filter sessionlog> @type grep <regexp> key message pattern /clip/ </regexp> </filter> <match sessionlog> <!-- 此处可替换为kibana对应的输出插件,效果一致 --> @type stdout </match>
核心调整点说明
- 修正正则大小写匹配逻辑:原正则匹配大写
Clip,和实际日志中的小写clip不匹配,调整后可正确识别符合条件的日志 - 新增
suppress_parse_error_log true参数:parse阶段遇到不匹配的日志时,不会输出warn级别的pattern not match日志,同时不匹配的日志会被直接丢弃,不会进入后续转发链路 - 可选的grep过滤层:如果后续需要调整过滤关键词,只需要修改filter中的pattern即可,无需改动日志解析逻辑,适合规则频繁调整的场景
效果验证
配置生效后,仅包含clip字符串的日志会被输出到控制台/转发到Kibana,其余日志既不会产生警告,也不会被上报。
内容的提问来源于stack exchange,提问作者sunshine
相关产品推荐
相关产品推荐

