logstash - 无法解析时间戳

logstash - Unable to parse timestamp

我有以下 JSON 日志(换行分隔)

{
      "logName": "projects/gg-sanbox/logs/appengine.googleapis.com%2Fnginx.request",
      "timestamp": "2018-04-02 22:26:02.869 UTC",
      "receiveTimestamp":"2018-04-02 22:28:06.742394 UTC",
}

和 logstash 配置

input
    {
      file {
        type => "json"
        path => "/logs/mylogs.log"
        codec => json
        start_position => "beginning"
        sincedb_path => "/dev/null"
      }
    }

    filter{
        json{
            source => "message"
        }
    date {
        match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS Z"]
    }
    }

    output
    {
        stdout
        {
            #codec => rubydebug
        }
        elasticsearch
        {
        codec => "json_lines"
            hosts => ["127.0.0.1:9200"]
           # document_id => "%{logstash_checksum}"
            index => "appengine_nginx-requests"
        }

    }

我在 logstash 输出中得到以下内容

"@timestamp"=>2018-04-07T15:26:31.857Z, "tags"=>["_dateparsefailure"],

请注意,它回退到当前数据和时间,而不是日志行中提到的时间,这实际上是事件已经发生,我想在 Kibana 时间线中看到。

不确定这里有什么问题。

查看date filter plugin documentation,格式选项Z不匹配UTC;因为单独它不是时区(要使它有效,它需要 +0000)。您需要像这样添加它:yyyy-MM-dd HH:mm:ss.SSS 'UTC'

回答你关于秒精度的另一个问题; 不支持 精度低于毫秒。如果您查看上面的 link,您会发现:

Maximum precision is milliseconds (SSS). Beyond that, zeroes are appended.