在 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
过滤器。
我正在尝试为某些日志编写 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
过滤器。