如何使用日志时间戳替换@timestamp

时间:2017-09-29 14:09:19

标签: timestamp logstash

我的示例日志行 -

14.111.26.41,22-MAY-17 20:33:09.694262,325711349,k101P481,1,2,1,1,1
             --------------------------
                   access_date

我在logstash中的过滤器如下所示

date {      
     match => [ "access_date","dd-MM-yy HH:mm:ss Z"]        
     target => "@timesstamp"
     }

请你帮忙告诉我,我要在哪里拧。

1 个答案:

答案 0 :(得分:-1)

已更新

我的道歉与困惑。 我已经在 logstash 5.4.0 上重新测试并提出了简单的解决方案。

首先,logstash日期过滤器不会解析微秒。

https://www.elastic.co/guide/en/logstash/5.4/plugins-filters-date.html#plugins-filters-date-match

  

秒的分数最大精度是毫秒(SSS)。外   那个,附加了零。

因此,以下代码不会解析 22-MAY-17 20:33:09.694262

  date {
    match => ["access_date", "dd-MMM-yy HH:mm:ss.SSS"]
  }

这将导致

{
           "path" => "/tmp/sample.csv",
     "@timestamp" => 2017-10-10T08:18:39.777Z,
    "access_date" => "22-MAY-17 20:33:09.694262",
       "@version" => "1",
           "host" => "localhost.localdomain",
        "message" => "22-MAY-17 20:33:09.694262",
           "tags" => [
        [0] "_dateparsefailure"
    ]
}

如果您想使用logstash 日期过滤器,那么您需要将 microsec 缩小为 milisec ,然后使用 SSS 的。

{
           "path" => "/tmp/sample.csv",
     "@timestamp" => 2017-05-22T11:33:09.694Z,
    "access_date" => "22-MAY-17 20:33:09.694",
       "@version" => "1",
           "host" => "localhost.localdomain",
        "message" => "22-MAY-17 20:33:09.694"
}