logstash使用的是標(biāo)準(zhǔn)時間UTC時間喻杈,我們在生成索引的時候常會使用xx-%{+YYYY.MM.dd}這樣的格式去建立索引局装,這個時間其實(shí)是讀取的@timestamp時間碳想,所以就會產(chǎn)生一個問題:今天的08:00之前的數(shù)據(jù)會在昨天的索引里面肩狂。網(wǎng)上方法很多,現(xiàn)提供一種方法
增加一個區(qū)域钉汗,去讀取本地時間
ruby {
code => "event.set('index_time',event.timestamp.time.localtime.strftime('%Y.%m.%d'))"
}
在output中調(diào)用
index => "bosslove-test-%{index_time}"
其實(shí)我覺得羹令,這個時區(qū)問題不是什么問題鲤屡,我們在搜索索引的時候都是類似于xx-2018-02*這樣來搜索的损痰。
其次我們kibana讀取的是瀏覽器時間,即使你從日志里面抓取了時間也最好改成標(biāo)準(zhǔn)時間
grok {
match => { "message" => "(.*%{LOGLEVEL:loglevel}.*) (?<time>\d{4}[./-]\d{0,2}[./-]\d{0,2} (\d+:){2}\d+) (?<detail>.*)" }
}
date { match => [ "time", "yyyy/MM/dd HH:mm:ss" ]
target => "time"
}
我通過data參數(shù)再次把抓取到的日志時間轉(zhuǎn)變?yōu)閁TC時間
以下是elastic中的展示
以下是kibana中的展示
會自動改成東八區(qū)時間
另外搜索日期的時候要嚴(yán)格按照數(shù)據(jù)格式搜索
UTC時間格式搜索不然會報錯
Discover: failed to parse date field [2018-08-09 04:56:00.664] with format [strict_date_optional_time||epoch_millis]