最近在配置Linux审计日志,出现ubuntu系统审计日志靠近结尾部分,有出现特殊字符,导致logstash grok规则解析失败。将日志message字段复制到Kibane Grok Debugger进行调试,很明显看到Sample Data审计日志有个颜色特殊字符,如果按住键盘Crrl+鼠标滚轮进行浏览器页面放大,会看到颜色字段里有两个特小字母,分别为GS,而且该字符不能单独复制,但是把所以全选复制粘贴到代码编辑器里,则看到特殊字符是以<0x1d>显示,也就是属于ASCII 字符集。

原本以为将<0x1d>复制到Gork Pattern规则里,logstash能正常解析,所以将配置好的grok规则添加到kibana Gork Pattern,调试日志是能正常解析日志,但是添加到logstash配置文件里,启动后logstash grok完全不失败,所以这类日志全部解析失败,如下图:

最后解决办法就是使用正则去匹配ASCII 字符集删除

Terminal window
filter {
grok {
match => {
"message" => "%{DATA:type}(?:[\x00-\x1F\x7F])*%{DATA:name}"
}
}
}

然后修改logstash配置文件,自动重载后,在观察最新日志,已经没有解析失败的审计日志了