logstash获取日志,时间戳相差8小时
背景:
logstash版本:2.4.9
由于logstash在获取时区的时候,默认获取的是UTC默认时间,同时elasticsearch在创建索引的时候,统一使用UTC时间,因此实际上在创建索引的时候,会将今天实际时间的前8个小时的日志文件输出至昨天的索引中,因为中国使用的为东8时区,源数据和实际创建的索引数据会相差8个小时。
对于页面查看,ELK的解决方案是在kibana上,读取浏览器的当前时区,然后在页面上进行转换,显示时间内容。
1、修改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())
2、修改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