我有以下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时间轴中看到。
不确定这里有什么问题。
答案 0 :(得分:0)
查看date filter plugin documentation,格式选项Z
与UTC
不匹配;因为它不是一个时区(因为它有效,它需要+0000
)。您需要像这样添加它:yyyy-MM-dd HH:mm:ss.SSS 'UTC'
回答关于秒数精确度的其他问题;它只是不支持,任何精度都低于毫秒。如果你看一下上面的链接,你会发现:
最大精度是毫秒(SSS)。除此之外,还会附加零。