Logstash 配置

Logstash configuration

我正在尝试使用 Logstash 解析和分析我的日志,并将它们输出到 elasticsearch。 Logstash 将日志文件中的每一行都视为一个新的日志条目,但问题是一个日志条目可能在多行中。我想配置过滤器以提取有用的数据(日期、线程、查询...)。

您需要查看多行过滤器 - http://logstash.net/docs/1.4.1/filters/multiline

我对 MariaDB 日志做了类似的事情,它可以是多行的 - 正则表达式会有所不同,但请查看 http://simonhanmer.co.uk/processing-mysql-mariadb-galera-logs-for-logstash/ 以获得一些想法

好的,提取线程相当简单,因为它由 [] 分隔,但查询有点困难。如果它前面总是显示行,你可以使用这样的东西

input { 
    pipe {
      command => 'type C:\Users\MEGDICHE\Downloads\default.log'
     }
}

filter{
    multiline {
        pattern => "^%{MONTH} %{MONTHDAY}"
    negate  => true
    what    => "previous"
    }

    grok {
        match => [ 'message', "(?m)^%{MONTH} %{MONTHDAY}.*\[%{GREEDYDATA:thread}\]:%{GREEDYDATA:rest_of_message}" ]
    }

    if [rest_of_message] =~ /select/ {
        grok {
            match => [ 'message', '(?m).*\nThe query before.*\n%{GREEDYDATA:query}$' ]
        }
    }

    mutate {
        remove_field => [ 'rest_of_message']
    }
}

output { 
  elasticsearch { host => localhost }
  stdout { codec => rubydebug } 
 }