引言
kibana是elasticsearch(以下簡稱ES)的可視化平臺,筆者平時使用kibana的dev tools
比較多,在這裏可以更便捷的使用ES的各種命令,DSL查詢語句等。
但是kibana的可視化功能遠不止於次。Kibana可以用來搜索,查看ES索引中的數據,可以輕鬆地進行高級數據分析,並可在各種圖表,表格和地圖中顯示數據。並且可以基於瀏覽器的界面快速創建和共享動態儀表板,實時反饋ES中數據的更改。
由於kibana可視化的很多組件其實都是基於ES聚合的結果,所以看本篇文章建議對ES的聚合有所瞭解。
本文使用的示例全部都是基於kibana自帶的示例數據,讀者自己有興趣也可以實際操作一下。
本文操作使用的ES和kibana都是基於7.1.0版本。
正文
新建索引模式(index pattern)
index pattern是kibana可視化的前提。它相當於告訴kibana要使用哪些索引作爲數據進行可視化展示。索引我們第一步就來創建一個index pattern。
如上圖所示,先在左側菜單找到management
,然後點擊index patterns
– create index pattern
。新建一個index pattern,這裏拿kibana自帶的電商的索引舉例。
在上圖中通過輸入index pattern的名稱,kibana會自動顯示匹配的索引,然後點擊next
。
選擇索引中的時間維度的字段,如果有多個的話根據具體的業務場景選擇。比如這裏我選擇的是訂單的創建時間字段。
需要說明的是,這個時間字段是用來方便基於時間過濾數據用的。如果你的業務上不需要基於時間範圍篩選,也可以不選擇這一步。
到這裏我們的index pattern就建好了。讀者自己可以參考上面的流程,爲航班數據索引新建一個index pattern。
使用discovery搜索數據
discovery在日誌搜索用的比較多,現在很多公司都會把服務的日誌蒐集到ES然後通過kibana的discovery功能查找日誌。這樣比以前登陸到線上服務器一臺臺grep
方便很多。
如上圖所示,在菜單中選擇discovery
,然後就能看到我們前面章節新建的index pattern。
在上圖的1的位置,我選擇了電商的index pattern,然後在2的位置選擇時間進行過濾,這裏我選擇是的1年前的所有數據。時間過來的維度很多,大家可以一一嘗試下。1的旁邊有個搜索框,可以輸入任意信息對索引進行搜索。除了一般的直接輸入字符串進行搜索之外,這裏還支持指定搜索某個字段,只需要在搜索框裏輸入類似下面:
user:"youssef"
就可以搜索user
字段值滿足youssef
的數據。
在圖中3的位置以直方圖的形式彙總了數據的分佈情況,可以看到我們的數據主要都集中在2019年12月到2020年1月這段時間內。
圖中4的位置就是數據本身了,可以支持table和json兩種方式顯示。左側的菜單裏支持過濾指定的字段顯示,這裏不展開來講了。
可視化數據
kibana自帶了很多可視化的組件,方便我們對聚合後的結果進行可視化的展示。下面來看一個例子。
在左側菜單選擇visualize
,然後點擊右邊的+
號,如下圖所示:
這裏有很多可視化組件,我這裏以pie
餅圖爲例子說明。
如上圖所示,我們在左邊選擇分桶聚合模式,然後分桶的字段是用戶性別字段,度量單位是count
,然後點擊上方的三角按鈕運行,結果就是上圖中展示的效果。在這個圖中可以看到男女的比例。
假如我們還想看下男女各自的城市分佈情況,可以添加一個子分桶,在左側下方點擊add sub buckets
。
如上圖,在子分桶裏我們同樣選擇了terms
分桶,然後分桶的字段是用戶所在的城市。運行之後就是上圖中的效果。點擊左上角的save
按鈕,還可以把當前的可視化結果保存。保存了之後我們就可以在dashboard上展示了。
在dashboard展示數據
dashboard可以理解爲一個展示各種可視化組件的面板,我們可以把之前保存的可視化結果添加到面板中進行展示。
點擊左側菜單中的dashboard
,然後點擊create new dashboard
,然後點擊add
,選擇我們前面保存的可視化組件。
下圖是一個基於我們前面講的電商的index製作的面板展示示例