elasticsearch Logstash 2.1.0-无法修改@timestamp,elasticsearch,logstash,logstash-grok,grok,elasticsearch,Logstash,Logstash Grok,Grok" /> elasticsearch Logstash 2.1.0-无法修改@timestamp,elasticsearch,logstash,logstash-grok,grok,elasticsearch,Logstash,Logstash Grok,Grok" />

elasticsearch Logstash 2.1.0-无法修改@timestamp

elasticsearch Logstash 2.1.0-无法修改@timestamp,elasticsearch,logstash,logstash-grok,grok,elasticsearch,Logstash,Logstash Grok,Grok,我有一个logstash过滤器配置,如下所示: filter{ ... date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ] target => "@timestamp" add_field => { "debug" => "timestampMatched"} } ... } 当它过滤日期和时间为的Apache Tomca

我有一个logstash过滤器配置,如下所示:

filter{
  ...
  date {
           match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
           target => "@timestamp"
           add_field => { "debug" => "timestampMatched"}
   }
  ...
}
当它过滤日期和时间为的Apache Tomcat服务器日志消息时:

message => [2015-12-03 16:46:49,240]
@timestamp
字段生成为:

"@timestamp" => "2015-12-03T21:46:49.240Z"
我可以理解的是,logstash生成的时间戳字段比tomcat日志消息中的时间提前了5个小时

要解决这个问题:

我修改了过滤器内的日期部分,添加了时区,如下所示:

date {
       match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
       target => "@timestamp"
       timezone =>"EST"
       add_field => { "debug" => "timestampMatched"}
}
ruby {
       code => "event['@timestamp'] = LogStash::Timestamp.new(Time.at(event['@timestamp'].to_i()).getlocal('-05:00'))"
}
date {
       match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
       target => "@timestamp"
       add_field => { "debug" => "timestampMatched"}
}
这不起作用,然后我在过滤器中添加了ruby块,使
@timestamp
字段与服务器日志消息匹配,但没有运气,如下所示:

date {
       match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
       target => "@timestamp"
       timezone =>"EST"
       add_field => { "debug" => "timestampMatched"}
}
ruby {
       code => "event['@timestamp'] = LogStash::Timestamp.new(Time.at(event['@timestamp'].to_i()).getlocal('-05:00'))"
}
date {
       match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
       target => "@timestamp"
       add_field => { "debug" => "timestampMatched"}
}
知道如何使
@timestamp
字段与服务器日志消息中的日期和时间字段匹配吗


谢谢。

你看到的事实是正确的。最佳做法是始终以UTC(即
Z
时区)存储时间戳,然后让前端(Kibana或其他)处理时区问题并在本地时区中显示日期。好的,谢谢。我使用的是
Kibana(4.0.2)
,我知道如何调整Kibana中显示的
@时间戳
和消息中显示的一样,目前我在Kibana中看到的
@时间戳是2015年12月21日01:11:59.828
,而在消息中是
2015-12-20 14:41:59828