logstash的输出中,每行日志开头都会加上timestamp. ,对于mysqlslowlog

tomcat log多行输出格式,就显得画蛇添足了,可读性很差,如:

logstash 多行合并_slowlog


因此需要使用logstash的 multiline 多行合并功能

logstash的配置文件中加入过滤规则:

filter {
  #slowlog每一段完整的日志都是以"# Time:"开头的,所以,如果是以"# Time:"开头的就开始新
  #一行,否则归到上一行中
         
  if [type] == 'slowlog' {
      multiline {
         what => next
         pattern => "^# Time:"
         
  #如果是"# [A-Za-z0-9_-]+@"开头的合并到上一行
             }
     multiline {
         what => previous
         negate => true
        pattern => "^# [A-Za-z0-9_-]+@"
     }
  }
 
   #tomcat log 每段日志是以时间戳开始的
   if [type] == 'tomcat' {
     multiline {
       pattern => "^%{TIMESTAMP_ISO8601} "
       negate => true
       what => previous  
            } 
    }
}

效果:

logstash 多行合并_slowlog_02