我有一个日志文件,其中数据由管道符号分隔。 “|”。一个例子如下。有谁知道如何编写GROK模式来提取它为logstash?
2014-01-07 11:58:48.7694 | LOGLEVEL | LOGSOURCE | LOGMESSAGE
答案 0 :(得分:11)
您可以使用gsub API更改管道“|”空间和使用GROK来提取它。
例如:
filter {
mutate {
gsub => ["message","\|"," "]
}
grok {
match => ["message","%{DATESTAMP:time} %{WORD:LOGLEVEL} %{WORD:LOGSOURCE} %{WORD:LOGMESSAGE}"]
}
}
以上配置适用于我的日志。希望这可以帮到你。
答案 1 :(得分:6)
使用此过滤器:
它对我有用。使用此网站验证grok patern,https://grokdebug.herokuapp.com/
(?<date>(([0-9]+)-*)+ ([0-9]+:*)+.*)\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}
答案 2 :(得分:1)
这对我有用
grok { match => ["message","%{DATESTAMP:time}\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE}"] }