用时区解析日期

时间:2016-04-09 14:02:38

标签: logstash logstash-configuration

我正在尝试将以下日期与logstash匹配:

Thu Apr 07 13:09:40 BST 2016

使用以下内容:

date {
    match => ["report_time", "EEE MMM dd HH:mm:ss z yyyy"]
    target => "@timestamp"
}

但是这会导致以下错误:

Failed parsing date from field {:field=>"report_time", 
:value=>"Thu Apr 07 13:08:03 BST 2016", 
:exception=>"Invalid format: \"Thu Apr 07 13:08:03 BST 2016\" 
is malformed at \"BST 2016\"", :config_parsers=>"EEE MMM dd HH:mm:ss z yyyy", 
:config_locale=>"default=en_US", :level=>:warn}

我认为导致此问题的z部分,有人可以解释我如何解析时区,BST

1 个答案:

答案 0 :(得分:0)

这是JODA的一个已知问题(由Logstash使用),它无法解析时区名称,在您的情况下是BST。 (时区名称)

参考链接: - https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-timezone

要解决此问题,您可以使用时区偏移替换时区名称。 您可以将BST更改为等效的偏移量,例如+0100。

为此,请将以下内容添加到logstash配置文件中:

mutate  {
gsub => ["report_time", "BST", "+0100"]
       }

它将取代如下:

"消息" => " Thu Apr 07 13:09:40 BST 2016",

" report_time" = GT; " Thu Apr 07 13:09:40 +0100 2016",