Logstash _日期已匹配时,dateparsefailure

Logstash _日期已匹配时,dateparsefailure,logstash,date-parsing,Logstash,Date Parsing,我试图配置logstash来处理一些测试日志,但我一直收到dateparsefailure,我不明白为什么。我的意见是 2016-09-18 00:00:02,013 UTC, idf="639b26a731284b43beac8b26f829bcab" 以及我的配置(我还尝试将时区包括在模式中): 最后,错误: {:timestamp=>"2016-09-21T10:04:32.060000+0000", :message=>"Failed parsing date from f

我试图配置logstash来处理一些测试日志,但我一直收到dateparsefailure,我不明白为什么。我的意见是

2016-09-18 00:00:02,013 UTC, idf="639b26a731284b43beac8b26f829bcab"
以及我的配置(我还尝试将时区包括在模式中):

最后,错误:

{:timestamp=>"2016-09-21T10:04:32.060000+0000", :message=>"Failed parsing date from field", :field=>"message", :value=>"2016-09-18 00:00:02,013 UTC, idf=\"639b26a731284b43beac8b26f829bcab\"", :exception=>"Invalid format: \"2016-09-18 00:00:02,013 UTC, idf=\"639b26a731284b4...\" is malformed at \" UTC, idf=\"639b26a731284b4...\"", :config_parsers=>"yyyy-MM-dd HH:mm:ss,SSS", :config_locale=>"default=en_US", :level=>:warn, :file=>"logstash/filters/date.rb", :line=>"354", :method=>"filter"}

它说它的日期在它结束后是错误的。为什么会发生这种情况,既然日期已经匹配,它不应该“停止搜索”吗?

在您可以使用
date
过滤器之前,您首先必须使用
grok
来分隔日期和消息的其余部分。
date
过滤器只接受时间戳。如果您在该字段中有任何其他信息,则将发生您正在描述的错误

使用您提供的日志行,我建议:

filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timedate} %{GREEDYDATA}"}
    }
    date {
        match => [ "timedate" => "yyyy-MM-dd HH:mm:ss,SSS"]
    }
}

在这个最小的示例中,我匹配
timedate
字段中的时间戳,然后通过日期过滤器对其进行压缩。

这是正确的。match=>[“timedate”=>“yyyy-MM-dd HH:MM:ss,SSS”]@FallAndLearn修复了拼写错误,谢谢提醒
filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timedate} %{GREEDYDATA}"}
    }
    date {
        match => [ "timedate" => "yyyy-MM-dd HH:mm:ss,SSS"]
    }
}