Logstash配置丢弃末尾匹配指定字符串的日志不生效如何解决
Logstash丢弃Prometheus采集日志规则不生效解决方案
核心根因
你当前使用的正则采用了行尾锚定符$,但实际日志message字段的末尾是双引号,并不是Prometheus/2.25.0,因此匹配规则完全无法触发。
排查&修正方案
- 修正正则匹配规则
调整正则逻辑即可命中目标日志,以下两种写法可选:
注意正则语法中# 简单匹配:只要日志包含Prometheus/2.25.0标识就丢弃 if [message] =~ /Prometheus\/2\.25\.0/ { drop {} } # 精准匹配:仅丢弃Prometheus采集/metrics接口返回200的日志,避免误删其他日志 if [message] =~ /GET \/metrics HTTP\/1\.1" 200.*Prometheus\/2\.25\.0/ { drop {} }.为特殊字符,默认匹配任意字符,如需匹配版本号中的字面量点号,建议添加转义符\避免意外匹配。 - 检查filter模块规则顺序
如果你在drop规则之前配置了grok、mutate等会修改message字段的规则,请将drop规则前移到所有修改message字段的规则之前。如果message已经被解析拆分、内容被修改,后续规则无法匹配原始日志内容。 - 确认配置已正常加载生效
修改Logstash配置后需要重启进程,或发送SIGHUP信号触发配置重载,重载后请检查Logstash运行日志,确认没有配置语法错误。如果是容器化部署,还需要确认修改的配置文件已经正确挂载到容器的配置加载目录。
内容的提问来源于stack exchange,提问作者lawindborne
相关产品推荐
相关产品推荐

