1. 程式人生 > >kibana 安裝和使用

kibana 安裝和使用




日誌分析任務

1. ElasticSearch

1.1 ElasticSearch安裝

Elastic官網的Product選擇ElasticSearch下載。
這裡寫圖片描述
這裡下載2.3.5版本,僅介紹Window下的安裝。將下載好的zip包解壓直接放在D盤,直接點選bin下的elasticsearch.bin啟動。
這裡寫圖片描述
開啟瀏覽器輸入如下http://localhost:9200,出現如下資訊即成功。這裡的”name”,是漫威中的名字,每次開啟都不一樣。ElasticSearch支援多節點,我們這裡採用了預設配置,配置多個節點時,即會顯示多個漫威人物的名字。
這裡寫圖片描述


這裡寫圖片描述

1.2 安裝Head外掛

Elasticsearch可使用官方的Mavel(漫威,哈哈)進行管理,我們使用更好用的Head外掛進行管理。開啟cmd視窗,進入elasticsearch的bin目錄,輸入如下指令,安裝head外掛。(大多數教程為-install,es 2.0版本之後,使用install即可)。
plugin install mobz/elasticsearch-head
輸入地址http://localhost:9200/_plugin/head/。Head為我們提供索引資訊、建立索引、資料瀏覽、基本查詢、複合查詢功能。
這裡寫圖片描述

2. Kibana

2.1 安裝Kibana

同樣,從elastic官網下載Kibana的zip包,解壓,執行bin下的kibana.bat,即可啟動Kibana。開啟瀏覽器,鍵入

http://localhost:5601訪問Kibana。

2.2 資料準備

從官方教程下載資料集https://www.elastic.co/guide/en/kibana/current/getting-started.html
資料集1:莎士比亞全集;資料集2:銀行賬戶資料;資料集3:日誌資料,欄位非常多,但是我們暫時只關注地理位置的部分。

{
    "line_id": INT,
    "play_name": "String",
    "speech_number": INT,
    "line_number": "String",
    "speaker": "String"
, "text_entry": "String", }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
{
    "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"
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
{
    "memory": INT,
    "geo.coordinates": "geo_point"
    "@timestamp": "date"
}   
  
  • 1
  • 2
  • 3
  • 4
  • 5

對資料進行Mapping,即定義資料各個Field的格式,是否分詞,什麼型別。可使用curl在命令列中對es進行mapping,也可以使用head的複雜查詢功能。當然,我們在生產環境中,通過介面一個一個建立還是速度太慢了。

{
 "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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
curl -XPUT http://localhost:9200/logstash-2015.05.18 -d '
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
';
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
官方建議使用Bulk API批量寫入我們下載的json資料,我們這裡先採用了Java API來寫入資料。使用Java API有一點小麻煩,Object需要進行解析,所以需要寫POJO,還需要把每一個Field一一對應好。使用Eclipse Mars EE,安裝好Maven和M2E,新建Maven專案。

    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>2.3.5</version>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>19.0</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.16</version>
    </dependency>
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

建立工程,包結構如下:
FileOperation封裝Commons-io的FileUtils操作;
ShakeSpeare,POJO實體,用來接收JSON parse的物件;
ShakeSpeareIndex,POJO實體,用來接收JSON parse的物件;
BulkInsert用來進行批量的insert操作。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

採用官方的Bulk API操作更為簡單:

curl –XPOST "localhost:9200/bank/account/_bulk?pretty" -data-binary @C:\eespace\elk\src\main\resources\data\accounts.json
  
  • 1

Window下是雙引號,後面的json檔案的路徑需加@。
建完索引,我們可以看到如下的介面:

2.2 Kibana繪圖

首先要讓Kibana知道需要進行視覺化和管理的ElasticSearch中的索引,採用正則的方式進行匹配,比如日誌檔案,就可以用logstash-2015.05*。
這裡寫圖片描述
日誌有時間線,對於account和shakespeare不要勾選index contains time-based events。點選Discover,開始探索應用。
這裡寫圖片描述
可以看到各個欄位和欄位對應的資料。點選Visualize開始進行視覺化展示。可選的型別很多,條形圖、走勢圖、餅圖、地圖,甚至可以新增Markdown widget建立一個圖形化的介面。
這裡寫圖片描述
左上角選擇Bank索引,鍵入account_number:<100 AND balance:>47500,進行資料篩選。得到篩選結果,如果只需要看其中一些資料,我們點選相應的Fileds的Add按鈕即可。
這裡寫圖片描述
這裡寫圖片描述
我們建立一個餅圖,來看看銀行的賬戶裡面稅錢在各個範圍內的佔比。在視覺化中點選From a new query,即新建一個Query來建立一個餅圖。
這裡寫圖片描述
選擇Range,即按照範圍劃分,建立餅圖。
這裡寫圖片描述
我們還可以在另一個維度上繼續拆分,比如,檢視這些人的年齡分佈。
這裡寫圖片描述
我們在右上角的第二個按鈕點選儲存,儲存該圖為Pie Chart。下面通過條形圖看看莎士比亞的戲劇中哪部劇臺詞最少,這部劇中哪個任務的話最多。
這裡寫圖片描述
進行如上設定,Y軸選不重複計數,來統計speaker欄位;X軸選話劇名,選詞,升序排列,得到條形圖。在Options中選擇grouped模式,即可在同一副圖中顯示兩項內容。
這裡寫圖片描述
這裡寫圖片描述
下面我們分析Log中的訪問的IP地址,都分佈在哪些國家,建立一個視覺化的地圖。首選選擇一個時間段。
這裡寫圖片描述
選擇我們建座標時的Geo Coordinate,即可得到地理座標圖,點選儲存。
這裡寫圖片描述
最後,我們輸入一些文字性資訊來展示。視覺化中選擇Markdown,按照Markdown的格式我們寫上合適的內容。
這裡寫圖片描述
進入DashBoard,將我們儲存好的內容展示在頁面上。
這裡寫圖片描述
稍加整理,得到最終的展示介面。
這裡寫圖片描述






日誌分析任務