使用Kibana


Kibana基本使用

https://www.elastic.co/guide/en/kibana/6.x/tutorial-load-dataset.html

https://www.elastic.co/cn/products/kibana

現在你已經安裝了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

       Tile maps

       Embedding Kibana 4 visualizations

在你開始之前:加載案例數據

 本段教程依賴如下數據集:

        1. 莎士比亞的所有著作,合適地解析成了各個字段:shakespeare.json。

        2. 隨機生成的虛構賬號數據:accounts.json

        3. 隨機生成的日志文件:logs.jsonl

   以上數據可在這里下載 https://www.elastic.co/guide/en/kibana/6.x/tutorial-load-dataset.html

  莎士比亞數據集由如下數據格式組織
{  
    "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按鈕在預覽面板顯示出渲染出來的標記效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM