背景:
logstash版本:2.4.9
因为logstash在获取时区的时候,默认获取的是UTC默认时间,同时elasticsearch在建立索引的时候,统一使用UTC时间,所以实际上在建立索引的时候,会将今天实际时间的前8个小时的日志文件输出至昨天的索引中,由于中国使用的为东8时区,源数据和实际建立的索引数据会相差8个小时。
对于页面查看,ELK的解决方案是在kibana上,读取浏览器的当前时区,而后在页面上进行转换,显示时间内容。
一、修改string_interpolation.rb文件
vim /data/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.4.1-java/lib/logstash/string_interpolation.rb
将.withZone(org.joda.time.DateTimeZone::UTC)修改成.withZone(org.joda.time.DateTimeZone.getDefault())
二、修改timestamp的配置文件
vim /data/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.4.1-java/lib/logstash/timestamp.rb 将@time = time.utc修改成@time = time