1. 程式人生 > >logstash 資料採集時間差8小時問題及解決

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