ELK學習筆記(2):在ElasticSearch匯入及查詢 Sample Data

上一篇完成 ELK安裝之後,可是系統內沒有資料可供查詢或進行視覺呈現,在Elastic官方網站可以下載測試資料,透過JSON格式將資料匯入。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基於JavaScript編程語言的一個子集(Subset),JSON是一種完全獨立的文字格式語言,使用C語言家族的程式設計師熟悉的約定,包括C語言、Java、JavaScript、Python和其他許多語言。
JSON建立在兩個結構上:
(1) 成對的「名稱/值」的集合。在各種語言中,稱為物件、記錄、結構、字典、hash table、keyed list, or associative array。
(2) 有順序的值列表。在大多數語言中,也就是一般所謂的陣列(Array)、矢量(Vector),列表(List)或序列 (Sequence)。

JSON格式樣式如下:
物件是一連串非排序的名稱/值 (name/value),這些物件以左大刮號{開始,右大刮號}當作結尾,每一個名稱後面跟著「:」,作為名稱跟值的配對,兩個配對間,由逗號分開。
有關 JSON格式更多的說明,請參考:http://json.org/ 。

官方網站的範例資料,包括以下三個:
(1) 威廉莎士比亞的全部作品,適當地解析成欄位。點擊這裡下載:shakespeare.json
(2) 一組隨機產生數據的虛擬賬戶。點擊這裡下載這個數據集: accounts.zip
(3) 一組隨機生成的日誌文件。點擊這裡下載這個數據集: logs.jsonl.gz
有了這三個範例資料,先要解壓縮:
$ unzip accounts.zip
$ gunzip logs.jsonl.gz
如果沒有 unzip及 gunzip程式,需先執行 apt-get 安裝。接著再將解壓縮後的資料匯入,透過cURL的指令,將JSON格式的檔案上傳後匯入。cURL是一個利用URL語法在命令列下工作的檔案傳輸工具,它支援檔案上傳和下載。指令如下:
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
可以使用以下指令取得查詢的資料:
$ curl -X GET "localhost:9200/_cat/indices?v"
或使用瀏覽器,輸入:
http://your_ip:9200/_cat/indices?v
就會看到如下圖資料:




成功匯入資料後,需先建立索引,從左方的[Management] → [Index Pattern],再按 [Create Index Pattern],會看到如以下畫面,已有 5 個索引,可輸入 Index Pattern的名稱,以以下範例,輸入 Logstash*。

按 [Next Step] ,在下拉選單選擇 @timestamp 當作過濾的時間欄位,再按下 [Create index pattern]。

接著在 Discover 選項查詢資料,資料區間需選擇 2015/5/18 - 2015/5/20之間才有資料,設定日期可按右上方 [Last 15 minutes],改成 Absolute 的起迄日期區間,即可呈現如下圖畫面。

如要在 Kibana中列出查詢的欄位,可以在 Available Fields下方選擇欄位名稱按 [add],就會出現一個欄位在上方Selected Fields 清單中,右方會出現查詢的結果,如下圖:


[參考資料]
http://json.org/
https://www.elastic.co/guide/en/kibana/6.x/tutorial-load-dataset.html

[修訂紀錄]
2018.05.06 初版

Post a Comment

較新的 較舊