http://www.cnblogs.com/wangpei886/p/8043021.html
使用版本:elk6.0
配置文件:logstash.confg
output {
elasticsearch {
id => "logstash-%{+YYYY.MM.dd}"
}
}
問題:如圖14號的數據,結果采集到了15號,慢了8小時,希望得到的結果,是凌晨0點索引自動切換
原因: 原來Logstash用的UTC時間, logstash在按每天輸出到elasticsearch時,因為時區使用utc,造成每天8:00才創建當天索引,而8:00以前數據則輸出到昨天的索引
查看一些論壇,不建議更改源碼,因為logstash和elasticsearch是按照UTC時間的,kibana卻是按照正常你所在的時區顯示的
解決:修改logstash配置
logstash在按每天輸出到elasticsearch時,因為時區使用utc,造成每天8:00才創建當天索引,而8:00以前數據則輸出到昨天的索引
在logstash filter 解決
1. 增加一個字段,計算timestamap+8小時
ruby {
# 新增索引日期,解決地區時差問題
code => "event.set('index_date', event.get('@timestamp').time.localtime + 8*60*60)"
}
2. 用mutate插件先轉換為string類型,gsub只處理string類型的數據,在用正則匹配,最終得到想要的日期
# 定義索引名時間
mutate {
convert => ["index_date", "string"]
gsub => ["index_date", "T([\S\s]*?)Z", ""]
gsub => ["index_date", "-", "."]
}
3.output配置
elasticsearch {
hosts => ["localhost:9200"]
index => "log1-%{index_date}"
}
* 這里是取系統時間,你可以取你日志里面的時間戳來做索引名
或許有其他更好的方案!請留言告知