es中:
日期時間欄位在json中以字串形式存在,但是在es中有專門的date型別來表示日期時間,並且,es中是以0時區來儲存date型別的值。
這就引出了乙個問題:
如果原始內容中的日期時間字段有時區資訊,那麼es會將其轉換為0時區並轉換為時間戳以long型別儲存在es中;
如果原始內容日期時間字段沒有時區資訊的話,例如2018-10-30 11:10:45
,那麼es會將其視為0時區的時間,即實際在es中儲存為2018-10-30 11:10:45 +0000
的時刻。
kibana中
kibana從es中獲取到date型別的字段後,會通過js獲取本機/本地時區,並將時間欄位從es的0時區轉換為本地時區之後展示出來。
所以遇到的問題如下:
"accounttime": ,
那麼我們日誌中東8區的時間2018-10-30 11:10:45
在es中會儲存為2018-10-30 11:10:45 +0000
的時間戳,然後kibana讀取的時候再做一次轉換,在kibana中該時刻就變成了2018-10-30 19:10:45 +0800
,比正常時間晚了8小時
解決方法
關於時區問題乙個最優解是原始內容裡的日期時間欄位就帶上時區資訊
我們通過logstash的filter模組來對原始資料做修改,為其增加時區資訊:
說明:type是input外掛程式中為不同日誌檔案指定的型別,方便在output外掛程式中自動生成索引字首
三種日誌檔案中有兩種日期時間字段,名為accounttime和time,格式均為2018-10-30 19:10:45
filter +0800" }}}
else if [type] == "key" or [type] == "bar" +0800" }}}
}
"accounttime": ,
記錄安裝es與kibana安裝中遇到的問題
問題1 無法使用root啟動 設定密碼 eskibana 連續輸入兩次即可 使用root賬號 在根目錄建立es資料夾 mv命令將 es和kibana資料夾放入es資料夾 chown r eskibana home eskibana es su eskibana 切換為eskibana使用者啟動 問題...
ES 和 Kibana 的安裝啟用
部署命令 docker pull docker.elastic.co elasticsearch elasticsearch 7.6.0 docker run name es p 9200 9200 p 9300 9300 e discovery.type single node 單點模式 v da...
docker部署es和kibana遇到的坑
docker容器部署es和kibana需要注意的點 1 es和kibana的映象版本必須一致。我這次用的是7.7.1版本 2 es非常占用記憶體,因此在建立容器的時候一定要控制es使用的記憶體 在7.7.1版本的kibana中已經存在了漢化補丁,我們只需要在配kibana的置檔案中新增資訊即可 我在...