logstash - 无法解析时间戳

时间:2018-04-07 15:41:24

标签: logstash logstash-configuration

我有以下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 config

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时间轴中看到。

不确定这里有什么问题。

1 个答案:

答案 0 :(得分:0)

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

回答关于秒数精确度的其他问题;它只是不支持,任何精度都低于毫秒。如果你看一下上面的链接,你会发现:

  

最大精度是毫秒(SSS)。除此之外,还会附加零。