Logstash日期过滤器不处理月份

时间:2014-12-15 14:57:52

标签: logstash

我们的对象,解析和所有:

{
         "message" => "[2014-12-15 14:28:03,786] WARN  org.apache.sshd.serve
        "@version" => "1",
      "@timestamp" => "2014-01-15T14:28:03.786Z",
            "type" => "errorlog",
            "host" => "localhost",
            "path" => "/var/lib/gerrit/log/error_log",
            "tags" => [
    [0] "multiline"
],
"gerrit_timestamp" => "2014-12-15 14:28:03,786",
        "loglevel" => "WARN",
          "object" => "org.apache.sshd.server.session.ServerSession"
}

正如您所看到的,我们将日期提取到gerrit_timestamp就好了。然后我们有一个日期过滤器来阅读gerrit_timestamp,并将其填入@timestamp

date {
   type => "errorlog"
   match => [ "gerrit_timestamp", "YYYY-MM-DD HH:mm:ss,SSS" ]
   target => "@timestamp"
 }

为什么@timestamp会在11个月后关闭?

1 个答案:

答案 0 :(得分:1)

根据经验,日期功能需要使用正确的日期布局进行调用,否则什么都不会出来,我不确定为什么你的日期在你的例子中是11个月,我建议你尝试以下方法:

date {
   type => "errorlog"
   match => [ "gerrit_timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
 }

此示例中的目标是多余的,因为默认行为是将值设置为@timestamp。根据{{​​3}} y是年份,而Y是年份的年份,不完全相同,D是一年中的一天,即1-365之间,而不是月份的日期,即d。