8

我有一个日志文件,其中数据由管道符号分隔。“|”。下面是一个例子。有谁知道如何编写一个 GROK 模式来将其提取到 logstash 中?

2014-01-07 11:58:48.7694|日志级别|日志源|日志消息

4

4 回答 4

11

您可以使用gsub API 更改管道“|” 到空间并使用 GROK 来提取它。

例如:

filter {
    grok {
            match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"]
    }
}

上面的配置是用你的日志在我身上工作的。希望这可以帮到你。

于 2014-01-08T06:43:55.677 回答
6

使用这个过滤器:

这个对我有用。使用此站点验证 grok 模式,https: //grokdebug.herokuapp.com/

(?<date>(([0-9]+)-*)+ ([0-9]+:*)+.*)\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}
于 2016-04-28T11:13:20.457 回答
1

这对我有用

grok { match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"] }
于 2020-10-09T16:30:47.353 回答
0

LOGMESSAGE 部分可以包含很长的内容。为此,我推荐以下用法。

%{GREEDYDATA:LOGMESSAGE}

于 2021-09-29T05:52:38.143 回答