在 logstash 中解析较长日志时出现问题

Trouble with while parsing longer logs in logstash

我正在尝试为某些日志编写 groke 规则,但似乎无法找到在单个日志中有多行的情况下应该做什么 以下是我的日志截图: screenshot of logs 在附加的图像中,绿色的(即较短的日志)被正确解析,而较长的(由红色框表示,有多于一行)被错误地解析。

多行:

这是我写的多行,

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”,我编写的 grok 规则不被接受。

我在编写 grok 规则时尝试了“\n”。

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 过滤器。