Logstash更改时间格式

时间:2014-04-30 08:18:37

标签: elasticsearch logstash

我的日志语句如下所示。

  

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中字段的含义以及它们如何映射到弹性搜索,这种混淆使我在这种情况下出错了。

1 个答案:

答案 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')
        "
    }
}

希望这可以帮到你。