在logstash中解析更长的日志时遇到麻烦

时间:2015-10-26 13:53:05

标签: logstash logstash-grok

我正在尝试为某些日志编写groke规则,并且似乎无法找到在单个日志中有多行的情况下应该执行的操作 以下是我拥有的日志的屏幕截图: screenshot of logs 在attatched图像中,绿色(即较短的日志),正确解析,而较长的(由红色框表示,有多行),将被错误地解析。

多行:

这是多线,我写的,

multiline 
{
   type => "sftp"
   pattern => "^[^\[2015]"
   what => "previous"
 }

这是同样的解析输出(错误):

[2015-10-03 23:32:00.603] ALL Config.logConfiguration() client configuration:]\n localPortCollection=[null]\n minThreadPoolSize=[3]\n maxThreadPoolSize=[6]\n perimeterServerName=[BSC_NODE2_OBD_PS3]\n.

正如您所看到的,上面的输出有" \ n"有了它,我写的格罗克规则不被接受,因为" \ n"在父日志中。

我试过了#34; \ n"在编写grok规则时。

1 个答案:

答案 0 :(得分:0)

filter {
if [type] == "sftp"{
    multiline {
     pattern => "^\[%{TIMESTAMP_ISO8601"
     negate => true
     what => previous
    }

    grok {
    match => {
    message =>  "\[%{TIMESTAMP_ISO8601:timestamp}\]%{SPACE}%{WORD:loglevel}%{SPACE}%{GREEDYDATA:message}"
    }
    }

}
}

在多行中使用negate并检查http://grokdebug.herokuapp.com/patterns#是否有可用的日期模式。

还可以使用date过滤器。