logstash 数据采集时间差8小时问题及解决

最近采用logstash采集日志按天产生文件

使用过程中发现logstash timestamp记录的时间戳为UTC时间。

比我们的时区早8个小时。

不能确保每天的数据在同一文件。

造成发送到es里的数据每天早上8点才创建索引,发送的file的数据每天早上8点自动切割。

不符合我们实际的需求。

解决此问题。

方法如下:

方法一、加入filter字段即可解决。

filter {
    ruby {
        code => "event.timestamp.time.localtime"
    }
}

方法二、修改logstash源码

vi logstash-2.4.1\vendor\bundle\jruby\1.9\gems\logstash-core-event-2.4.1-java\lib\logstash\timestamp.rb

UTC = org.joda.time.DateTimeZone.forID(“UTC”)  
修改为:  
UTC = org.joda.time.DateTimeZone.getDefault()

方法三、继续修改源码 总有一种适合你的

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

猜你喜欢

转载自blog.csdn.net/qq_33283716/article/details/83055655