我的日志语句如下所示。
2014-04-23 06:40:29 INFO [1605853264] [ModuleName] - [ModuleName] - Blah blah
我能够解析它并且使用以下ES字段正确记录到ES
“LogTimestamp”:“2014-04-23T13:40:29.000Z”
但是我的要求是将此语句记录如下,注意'z'被删除+0000。我试过替换,gsub但没有改变输出。
“LogTimestamp”:“2014-04-23T13:40:29.000 + 0000”
有人可以帮忙吗?
这是我的模式
TEMP_TIMESTAMP %{YEAR}-%{MONTHNUM}-%{MONTHDAY}\s%{HOUR}:%{MINUTE}:%{SECOND} TEMP_LOG %{TEMP_TIMESTAMP:logdate}\s*?%{LOGLEVEL:TempLogLevel}\s*?\[\s?*%{BASE10NUM:TempThreadId}\]%{GREEDYDATA}
这是过滤器配置:
grok{
patterns_dir => ["patterns"]
match=> ["message", "%{TEMP_LOG}"]
}
date{
match => [ "logdate", "yyyy-MM-dd HH:mm:ss" ]
target => "LogTimestamp"
timezone => "PST8PDT"
}
mutate {
gsub => ["logdate", ".000Z", ".000+0000"]
}
我还没有完全理解logstash中字段的含义以及它们如何映射到弹性搜索,这种混淆使我在这种情况下出错了。
答案 0 :(得分:2)
你可以使用ruby插件做你想做的事情!
根据您的要求,您想要更改此
“LogTimestamp”:“2014-04-23T13:40:29.000Z”
到
“LogTimestamp”:“2014-04-23T13:40:29.000 + 0000”
尝试使用此过滤器
filter {
ruby {
code => "
event['LogTimestamp'] = event['LogTimestamp'].localtime('+00:00')
"
}
}
希望这可以帮到你。