logstash 将时间转换为日期时间

logstash convert time to date time

我正在使用 logstash 将数据从 filebeat 推送到 elasticsearch。我的数据的时间为 hh:mm:ss a (05:21:34 AM)。我想添加今天的日期。 这是 logstash 配置过滤器

filter{
    grok{ some grok pattern to get time}
    date {
        locale => "en"
        match => ["time", "hh:mm:ss a"]
        target => "@timestamp"
    }
}

但数据转换为 2016-01-01T05:21:34.000Z 如何将其更改为 2016-10-14T05:21:34.000Z

我认为 logstash 足够聪明,可以使用当前年份(如您所见),但它不会默认其他字段。

您应该使用所需的完整日期时间字符串创建一个新字段。这样的事情应该在你的 grok 和日期之间起作用:

grok { }
mutate {
    add_field => { "datetime" => "%{+YYYY.MM.dd} %{time}" }
}
date { }

请务必更改您的日期模式以使用新的日期时间字段及其格式。{}如果您不想在调用 date{} 后使用日期时间字段,您可以改用元数据字段,或者 remove_field 作为 date{} 的一部分。