logstash 資料採集時間差8小時問題及解決
阿新 • • 發佈:2018-11-08
最近採用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