現在你已經安裝了Kibana,現在你一步步通過本教程快速獲取Kibana核心功能的實踐經驗。學習完本教程,你將:
1.加載案例數據到你安裝的Elasticsearch中
2. 定義至少一個索引匹配模式
3.使用Discover功能探索你的數據
4.建立一個visualization圖形化地展示你的數據
5.把許多visualization彙編組裝成一個Dashboard
本段內容假設你已經安裝好了Kibana和Elasticsearch,並且Kibana連接到了Elasticsearch。
視頻教程也可獲取
High-level Kibana 4 introduction, pie charts
Data discovery, bar charts, and line charts
Embedding Kibana 4 visualizations
在你開始之前:加載案例數據
本段教程依賴如下數據集:
1. 莎士比亞的所有著作,合適地解析成了各個字段:shakespeare.json。
2. 隨機生成的虛構賬號數據:accounts.json
3. 隨機生成的日誌文件:logs.jsonl
以上數據可在這裏下載
莎士比亞數據集由如下數據格式組織
{
"line_id": INT,
"play_name": "String",
"speech_number": INT,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}
賬戶數據集由如下數據格式組織
{
"account_number": INT,
"balance": INT,
"firstname": "String",
"lastname": "String",
"age": INT,
"gender": "M or F",
"address": "String",
"employer": "String",
"email": "String",
"city": "String",
"state": "String"
}
日誌數據有幾十個不同的字段,但是在教程中關注的字段如下:
{
"memory": INT,
"geo.coordinates": "geo_point"
"@timestamp": "date"
}
在導入莎士比亞數據集之前,我們需要爲各個字段建立一個映射。映射把索引裏的文檔劃分成邏輯組,指明字段的特徵,如字段是否可被搜索、是否被標記、是否能被拆分成多個文字等。
使用以下命令爲莎士比亞數據集建立一個映射。
curl -XPUT http://localhost:9200/shakespeare -d '
{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string", "index" : "not_analyzed" },
"line_id" : { "type" : "integer" },
"speech_number" : { "type" : "integer" }
}
}
}
}
';
這個映射指明瞭數據集的如下特徵:
1. speaker字段是一個字符串,並且不被分析。這個字段的字符串被視爲一個單元,即時字段值有多個文字。
2.play_name同樣符合上述特徵。
3.line_id和speech_number是一個整數。
日誌數據需要一個映射表明地理位置的經緯度,通過在那些字段使用一個geo_point類型。
使用以下命令爲日誌數據建立一個geo_point映射。
curl -XPUT http://localhost:9200/logstash-2015.05.18 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
curl -XPUT http://localhost:9200/logstash-2015.05.19 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
curl -XPUT http://localhost:9200/logstash-2015.05.20 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
那些賬號數據不需要任何映射,所以這個時候我們使用Elasticsearch的批量導入API輸入數據,使用如下命令:
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
curl -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
這些命令將會花費一段時間來執行,視可利用計算資源而定。
使用如下命令驗證成功導入:
curl 'localhost:9200/_cat/indices?v'
你將會看到輸出如下類似的信息
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank 5 1 1000 0 418.2kb 418.2kb
yellow open shakespeare 5 1 111396 0 17.6mb 17.6mb
yellow open logstash-2015.05.18 5 1 4631 0 15.6mb 15.6mb
yellow open logstash-2015.05.19 5 1 4624 0 15.7mb 15.7mb
yellow open logstash-2015.05.20 5 1 4750 0 16.4mb 16.4mb
1. 定義你的索引模式匹配
每一個數據集導入到Elasticsearch後會有一個索引匹配模式,在上段內容莎士比亞數據集有一個索引名稱爲shakespeare,賬戶數據集的索引名稱爲bank。一個索引匹配模式就是一個字符串包含可選的通配符,它能匹配多個索引。比如,在常用的日誌案例中,一個典型的索引名稱包含MM-DD-YYYY格式的日期,因此一個5月的索引匹配模式可能是這樣:logstash-2015.05*。
在本教程中任何匹配模式匹配到我們導入的索引將會起作用。打開一個瀏覽器,訪問localhostL:5601,點擊Setting頁面,然後點擊indices標籤,點擊Add New按鈕,定義一個新的模式匹配。兩個數據集——莎士比亞劇和虛構的賬號不包含時間系列的數據,確保Index contains time-based events複選框沒有勾選,當你在爲這些數據集創建模式匹配的時候。指定shaks*爲莎士比亞數據集的一個模式匹配,然後點擊Create按鈕定義一個模式匹配,接着定義一個ba*的模式匹配。
Logstash數據集包含時間系列的數據,所以在點擊Add New按鈕創建完模式匹配後,確保Index contains time-based events複選框勾選,並在Time-field name下拉列表中選擇@timestamp字段。
發現你的數據
點擊Discover頁面展示Kibana的數據發現功能。
在標籤頁面的正下方,有一個查詢框用於搜索你的數據。搜索需要一個特定的查詢語法,它們能讓你創建自己的搜索,點擊查詢框右邊的按鈕能保存這些搜索。在查詢框的下方,當前的索引匹配模式顯示在一個下拉選中,選擇下拉選以改變匹配模式。你能用字段名和你感興趣的值構建一個搜索,數字類型的數據可使用比較操作符比如>、<、=等,你可使用AND、OR、 NOT邏輯符連接元素,必須是大寫。
試着選擇ba*模式匹配,然後把下面的查詢放到查詢框
account_number:<100 AND balance:>47500
搜索返回所有賬戶號碼0到99且薪水超過4,7500的賬戶。如果你使用相關的案例數據,將會返回5條數據:賬戶號碼8,32,78,85和97。
爲了窄化顯示某些感興趣的字段,高亮索引模式匹配下面的列表中的字段,然後點擊Add按鈕。在這個例子中,注意怎麼實現的,添加一個account_number字段後改變界面顯示從5條記錄的完整文本到一個只有賬戶號碼的簡單列表。
2. 數據可視化:不只是發現數據
Visualize頁面的可視化工具能使你用好幾種不同的方式展示你數據集的很多方面。
點擊Visualize頁面開始
點擊Pie chart,然後點擊from a new search,選擇ba*索引匹配模式。
可視化依賴Elasticsearch聚合的兩種類型:量聚合和刻度聚合。量聚合根據你指定的標準整理數據,比如,在我們的賬戶數據集中,我們可以建立一個賬戶薪水的範圍,然後顯示落在每個薪水範圍的總比率。界面顯示出一個完整的餅,因爲我們現在還沒有指定任何量值。
在Select buckets type下拉列表中,選擇Split Slices,然後在Aggregation下拉列表中選擇Range選項,在字段下拉列表中選擇balance字段,點擊Add Range按鈕4次把區間增加到6個,輸入一下區間。
0 999
1000 2999
3000 6999
7000 14999
15000 30999
31000 50000
點擊應用按鈕顯示圖表。
圖表顯示出這1000個賬戶落在不同薪水範圍的比率。爲了看數據的另一個維度,我們要添加另一個量聚合。我們可以更進一步地把每個區間依據薪水所有者的年齡拆分。在下面點擊Add sub-buckets,然後點擊Split Slice,在下拉選中選擇Terms選項和age字段,點擊綠色Apply changes按鈕在新的結果中增加一個外環。
通過點擊搜索字段的右邊的按鈕保存圖表,把這個圖表命名爲Pie Example。
下一步,我們打算製作一個條形圖。點擊New Visualization按鈕,然後點擊Vertical bar chart。選擇From a new search,然後選定shakes*模式匹配。你將會看到單個大條形圖,因爲到現在爲止我們還沒有定義任何量值。
對於Y軸的刻度聚合,選擇speaker作爲Unique Count的字段。對於莎士比亞戲劇,知道那部戲劇需要最少數量的臺前幕後人員可能是很有用的,如果你的戲劇公司短缺演員的話。對於X軸的量值,選擇Terms聚合和play_name字段。對於排序,選擇Ascending,Size保持默認值5。讓其他參數保持默認值,然後點擊Apply cganges按鈕,你的圖表應該看起來像下面那樣。
注意一下每部劇名是怎麼顯示成一個完整的詞組而不是被拆分成單獨的單詞。這是我們在教程的前段部分設置映射的結果,我們把play_name標記爲 not analyzed。鼠標移到每一個條上以tooltip形式顯示每個劇臺前幕後的數量。你可以關掉這個顯示方式或者改變你圖表的其他選項通過點擊左上方的Option標籤。
既然你有了莎士比亞劇中最小的演員表,你可能感興趣知道這些劇本中哪一個對單個演員的要求最高,通過顯示給定劇情的最大對話量。用Add metrics按鈕增加一個Y軸聚合,爲speech_number選擇Max聚合。在option頁面選擇Bar Mode的grouped選項,然後點擊Apply changes按鈕,你的圖表現在看起來應該是這樣:
正如你所看到的,和其他劇比較起來,《Love’s Labours Lost》經常有最高數量的對話,因此和能會對一個演員的記憶要求更高。
保存圖表的名稱爲Bar Example。
接下來,我們要製作一個瓦片地圖來可視化一些地理數據。點擊New Visualization按鈕,然後點擊Tile map按鈕,選擇from a new search和logstash-*模式匹配。在Kinaba界面的右上方的時間選擇器爲我們的要發掘的數據定義一個時間窗口,點擊Absolute按鈕,然後設置起始時間爲2015-5-18結束時間到2015-5-20。
一旦我們設置好了時間區間,點擊Go按鈕,然後點擊底部小小的向上箭頭關閉時間選擇器。你可以看到整個世界的地圖,因爲我們現在還沒有定義任何量值。
選擇Geo Coordinates作爲量值,然後點擊那個綠色的Apply changes按鈕,你的圖表現在看起來應該是這樣的:
你可以通過點擊或者拖拽來導航地圖,放大縮小地圖用按鈕,或者點擊Fit Data Bounds按鈕來縮小到包含所有點的最低級別。一個綠色的橢圓的過濾器顯示在查詢框的正下方。
鼠標移到過濾器顯示一些控制工具:切換、定位、翻轉、刪除過濾器。用Map Example名字保存這個圖表。
最後我們用一些標記小部件來展示我們的儀表盤。點擊New Visualization按鈕然後點擊Markdown widget按鈕來顯示一個非常簡單的標記字段輸入框:
在那個字段輸入如下文本:
# This is a tutorial dashboard!
The Markdown widget uses **markdown** syntax.
> Blockquotes in Markdown use the > character.
點擊Apply changes按鈕在預覽面板顯示出渲染出來的標記效果。
用Markdown Example名稱保存這個圖表。
3.全部放入儀表盤
一個Kibana儀表盤是許多圖表的集合允許你整理和分享。點擊Dashboard頁面以開始,點擊搜索框最右邊的Add Visualization按鈕,顯示出已保存圖表的列表。選擇Markdown Example、Pie Example、Bar Example和Map Example,然後點擊底部小小的箭頭關閉列表。你可以通過點集合拖拽標題條移動各個圖表的容器,通過拖拽圖表容器右下角調整容器大小。你的樣例儀表盤最終看起來差不多是這樣:
點擊Save Dashboard 按鈕,然後爲儀表盤命名爲Tutorial Dashboard。你可以通過點擊Share 按鈕來顯示HTML嵌入代碼或者是一個定向鏈接分享一個保存的儀表盤。