elasticsearch Logstash 2.1.0-无法修改@timestamp
我有一个logstash过滤器配置,如下所示: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
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