Kibana 用戶指南(構建你本身的儀表盤)

構建本身的儀表盤

準備加載一些數據並構建儀表盤?本教程將向你展現如何:html

  • 將數據集加載到Elasticsearch中
  • 定義索引模式
  • 發現並探索數據
  • 可視化數據
  • 將可視化添加到儀表盤
  • 檢查可視化背後的數據

加載樣例數據

本教程須要三個數據集:web

  • William Shakespeare的所有做品,適當地解析成字段,下載shakespeare.json
  • 一組帶有隨機生成數據的虛構賬戶,下載account.zip
  • 一組隨機生成的日誌文件,下載logs.jsonl.gz

其中兩個數據集是壓縮的,要提取文件,請使用如下命令:shell

unzip accounts.zip
gunzip logs.jsonl.gz

數據集的結構

Shakespeare數據集具備如下結構:json

{
    "line_id": INT,
    "play_name": "String",
    "speech_number": INT,
    "line_number": "String",
    "speaker": "String",
    "text_entry": "String",
}

accounts數據集的結構以下:segmentfault

{
    "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"
}

logs數據集有許多不一樣的字段,如下是本教程的重要字段:安全

{
    "memory": INT,
    "geo.coordinates": "geo_point"
    "@timestamp": "date"
}

設置映射

在加載Shakespeare和logs數據集以前,必須爲字段設置映射,映射將索引中的文檔劃分爲邏輯組,並指定字段的特徵,這些特徵包括字段的可搜索性以及它是否被標記化,或者分解爲單獨的單詞。markdown

若是啓用了安全性,則必須具備運行本教程的全部Kibana權限,你還必須具備建立,管理讀取,寫入和刪除索引權限,有關詳細信息,請參閱 安全權限

在Kibana Dev Tools > Console,爲Shakespeare數據集設置映射:app

PUT /shakespeare
{
 "mappings": {
  "doc": {
   "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
   }
  }
 }
}

此映射指定數據集的字段特徵:curl

  • speakerplay_name字段是關鍵字字段,這些字段不被分析,即便字符串包含多個單詞,它們也會被視爲一個單元。
  • line_idspeech_number字段是整數。

logs數據集須要映射以經過應用geo_point類型將緯度和經度對標記爲地理位置。elasticsearch

PUT /logstash-2015.05.18
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.19
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.20
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}

accounts數據集不須要任何映射。

加載數據集

此時,你已準備好使用Elasticsearch bulk API來加載數據集:

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl

或者對於Windows用戶,在Powershell中:

Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"

這些命令可能須要一些時間才能執行,具體取決於可用的計算資源。

驗證加載成功:

GET /_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

定義索引模式

索引模式告訴Kibana你想要探索哪些Elasticsearch索引,索引模式能夠匹配單個索引的名稱,或者包含通配符(*)以匹配多個索引。

例如,Logstash一般以logstash-YYYY.MMM.DD格式建立一系列索引,要瀏覽2018年5月的全部日誌數據,你能夠指定索引模式logstash-2018.05*

你將爲Shakespeare數據集建立模式,該數據集具備名爲shakespeare的索引,和accounts數據集,其具備名爲bank的索引,這些數據集不包含時間序列數據。

  1. 在Kibana中打開Management,而後點擊Index Patterns
  2. 若是這是你的第一個索引模式,則Create index pattern頁面將自動打開,不然,單擊左上角的Create index pattern
  3. Index pattern字段中輸入shakes*

    tutorial-pattern-1.png

  4. 單擊Next step
  5. Configure settings中,單擊Create index pattern,對於這個模式,你不須要配置任何設置。
  6. 定義第二個名爲ba*的索引模式,你不須要爲此模式配置任何設置。

如今爲Logstash數據集建立一個索引模式,這個數據集包含時間序列數據。

  1. 定義一個名爲logstash*的索引模式。
  2. 單擊Next step
  3. Configure settings中,在Time Filter field name下拉菜單中選擇@timestamp
  4. 單擊Create index pattern
定義索引模式時,與該模式匹配的索引必須存在於Elasticsearch中,而且它們必須包含數據,要檢查哪些索引可用,請轉到 Dev Tools > Console並輸入 GET _cat/indices,或者,使用 curl -XGET "http://localhost:9200/_cat/indices"

發現你的數據

使用Discover應用程序,你能夠輸入Elasticsearch查詢來搜索數據並過濾結果。

  1. 打開Discover
    當前索引模式顯示在過濾條下方,在如今這種狀況下是shakes*,你可能須要在菜單欄中單擊New以刷新數據。
  2. 單擊當前索引模式右側的插入符號,而後選擇ba*
  3. 在搜索字段中,輸入如下字符串:
    account_number:<100 AND balance:>47500

搜索返回0到99之間的全部賬號,餘額超過47,500,它返回賬號8,32,78,85和97的結果。

tutorial-discover-2.png

默認狀況下,會爲每一個匹配的文檔顯示全部字段,要選擇要顯示的字段,請將指針懸停在Available Fields列表上,而後單擊要在表中包含的每一個字段旁邊的add

例如,若是添加account_number字段,則顯示將更改成包含五個帳戶數的列表。

tutorial-discover-3.png

可視化你的數據

在Visualize應用程序中,你可使用各類圖表、表格和地圖等來塑造數據,你將建立四個可視化效果:餅圖、柱狀圖、座標圖和Markdown小部件。

  1. 打開Visualize
  2. 點擊Create a visualization+按鈕,你將在Kibana中看到全部的可視化類型。

    tutorial-visualize-wizard-step-1.png

  3. 點擊Pie
  4. New Search中,選擇ba*索引模式,你將使用餅圖瞭解銀行帳戶數據中的帳戶餘額。

    tutorial-visualize-wizard-step-2.png

餅圖

實際上,餅圖只包含一個「切片」,這是由於默認搜索匹配全部文檔。

tutorial-visualize-pie-1.png

要指定要在餅圖中顯示哪些切片,可使用Elasticsearch的bucket聚合,此聚合將匹配搜索條件的文檔排序爲不一樣的類別,也稱爲bucket。

使用bucket聚合來創建多個賬戶餘額範圍,並找出每一個範圍中有多少賬戶。

  1. Buckets窗格中,點擊Split Slices
  2. Aggregation下拉菜單中,選擇Range
  3. Field下拉菜單中,選擇balance
  4. 點擊Add Range 4次,使範圍總數達到6個。
  5. 定義如下範圍:

    0             999
    1000         2999
    3000         6999
    7000        14999
    15000       30999
    31000       50000
  6. 點擊Apply changes

如今你能夠看到1000個帳戶落入每一個餘額範圍的比例是多少。

tutorial-visualize-pie-2.png

添加另外一個關注賬戶持有人年齡的bucket聚合。

  1. Buckets窗格的底部,單擊Add sub-buckets
  2. Select buckets type中,單擊Split slice
  3. Sub Aggregation下拉列表中,選擇Terms
  4. Field下拉列表中,選擇age
  5. 點擊Apply changes

如今,你能夠看到賬戶持有人的年齡細分,顯示在餘額範圍的環形上。

tutorial-visualize-pie-3.png

保存此圖表以便之後使用:

  • 單擊頂部菜單欄中的Save並輸入Pie Example

柱狀圖

你將使用柱狀圖查看Shakespeare的數據集,並比較playspeaking部分的數量。

  • 建立一個Vertical Bar,並將搜索源設置爲shake*

最初圖表是一個顯示匹配默認通配符查詢的文檔總數的單一欄。

tutorial-visualize-bar-1.png

在y軸上顯示每一個playspeaking部分的數量,這須要你配置y軸指標聚合,這個聚合根據搜索結果的值計算指標。

  1. Metrics窗格中展開Y-Axis
  2. Aggregation設置爲Unique Count
  3. Field設置爲speaker
  4. Custom Label框中,輸入Speaking Parts
  5. 點擊Apply changes

tutorial-visualize-bar-1.5.png

沿着x軸顯示paly

  1. Buckets窗格中,點擊X-Axis
  2. Aggregation設置爲Terms,將Field設置爲play_name
  3. 要按字母順序排列play,請在Order下拉菜單中選擇Ascending
  4. 給軸一個自定義的標籤,Play Name
  5. 點擊Apply changes

鼠標懸停在一個柱子上,會顯示一個工具提示,其中包含該playspeaking部分的數量。

注意單獨的play名字是如何以完整的短語出現的,而不是被分解成單獨的單詞,這是你在本教程開始時所作的映射的結果,當時你將play_name字段標記爲不分析

使用名稱Bar Example保存此圖表。

座標圖

使用座標圖,你能夠在日誌文件示例數據中可視化地理信息。

  1. 建立一個Coordinate map,並將搜索源設置爲logstash*
  2. 在頂部的菜單欄中,單擊最右邊的時間選擇器。
  3. 點擊Absolute
  4. 將開始時間設置爲2015年5月18日,結束時間設置爲2015年5月20日。
  5. 點擊Go

你尚未定義任何桶,因此可視化是世界地圖。

tutorial-visualize-map-1.png

如今,從日誌文件映射地理座標。

  1. Buckets窗格中,單擊Geo Coordinates
  2. Aggregation設置爲Geohash,將Field設置爲geo.coordinate
  3. 點擊Apply changes

如今地圖看起來像這樣:

tutorial-visualize-map-2.png

你能夠經過點擊並拖動來導航地圖,地圖左上角的控件使你可以縮放地圖並設置過濾器,試一下。

tutorial-visualize-map-3.png

使用名稱Map Example保存此地圖。

Markdown

最後的可視化是一個呈現格式化文本的Markdown小工具。

  1. 建立一個Markdown可視化。
  2. 在文本框中輸入如下內容:

    # This is a tutorial dashboard!
    The Markdown widget uses **markdown** syntax.
    > Blockquotes in Markdown use the > character.
  3. 點擊Apply changes

在預覽窗格中呈現Markdown:

tutorial-visualize-md-2.png

用名稱Markdown Example保存這個可視化。

在儀表盤中顯示你的可視化

儀表盤是你能夠排列和共享的可視化集合,你將構建一個儀表盤,其中包含在本教程中保存的可視化內容。

  1. 打開Dashboard
  2. 點擊Create new dashboard
  3. 點擊Add
  4. 添加Bar ExampleMap ExampleMarkdown ExamplePie Example

你的示例儀表盤看起來像這樣:

tutorial-dashboard.png

你能夠經過點擊可視化的標題並拖動來從新排列可視化,在可視化的右上角的齒輪圖標顯示編輯和刪除可視化的控件,一個調整大小的控件在右下角。

要得到要共享的連接或將儀表盤嵌入web頁面的HTML代碼,請保存儀表盤並單擊Share

保存你的儀表盤。

檢查數據

數據的可視化效果很是好,可是有時候你須要查看實際數據來了解真正發生了什麼,你能夠檢查任何可視化後的數據,並查看用於檢索它的Elasticsearch查詢。

  1. 在儀表盤中,將指針懸停在餅圖上方。
  2. 點擊右上角的圖標。
  3. Options菜單中,選擇Inspect

tutorial-full-inspect1.png

你還能夠查看用於獲取可視化數據的查詢。

  1. 打開View:Data菜單並選擇Requests
  2. 單擊選項卡查看請求統計信息、Elasticsearch請求和JSON中的響應。
  3. 要關閉檢查器,請單擊右上角的X

tutorial-full-inspect2.png

總結

既然你已經掌握了基礎知識,那麼你就能夠開始使用Kibana探索你本身的數據了。

  • 有關搜索和過濾數據的信息,請參閱Discover
  • 有關Kibana提供的可視化類型的信息,請參閱Visualize
  • 有關配置Kibana和管理保存的對象的信息,請參閱Management
  • 有關能夠用於向Elasticsearch提交REST請求的交互式控制檯的信息,請參閱Console

上一篇:使用Flight儀表盤探索Kibana

下一篇:Discover

相關文章
相關標籤/搜索