iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Elastic Stack on Cloud

ES 新手,破門而入!!!系列 第 16

【ES新手,破門而入!】Day16 - 戴上 Kibana 看著資料的北半球

  • 分享至 

  • xImage
  •  

你可以學到?

接下來兩天,我們將會深入了解 Kibana,一個重要的視覺化工具。

本篇的主題包含有:

  1. 在 Kibana 之前,Elastic 與 data 簡介

那我們就開始吧!

Elastic 簡介

在開始介紹 Kibana 之前,我們先來講講 Elastic 這間公司,他們在資料問題上,提供了 3 種解決方案:

  1. Search
  2. Observability
  3. Security

這三種解決方案讓你可以搜索、觀察與保護你的系統。

而這些解決方案是由一個堆疊(stack)、一套軟體讓我們可以傳送、讀取、儲存、搜索與視覺化資料,我們稱它做 Elastic Stack,這個堆疊是由 Kibana、Elasticsearch、Beats 和 Logstash 所構成。

資料的旅程

所有收集資料到最後視覺化的過程,好比是一個旅程一般,如下圖所示,一開始資料產生後,透過 Beats 或 Logstash,傳送輸入進 Elasticsearch 做儲存、建立索引,最後再透過 Kibana 與 Elasticsearch 互動後做視覺化的呈現。

文件(Documents)

資料可以用各種不同的形態做儲存,例如說 table、XML、JSON...等等,而在 Elasticsearch 中,資料是以一種稱做 **文件(documents)**的方式做儲存,並以JSON做表示。

舉例來說,如果今天有一個 table 的資料如下圖:

以第一筆資料來說,儲存在 Elasticsearch 內就會變成:

{
    "user": "Bill",
    "age": 30,
    "country": "FR",
    "category": "A"
}

而六筆資料就會變成六個文件,像下圖這樣:

資料的種類

一般來說,我們可以將資料粗略的分為兩大種類:

  • 靜態資料
  • 時間序列資料

這兩種類型的資料,最大的差異點就在於:會不會隨著時間增加而改變或增加

在 Elaticsearch 中,因為是用索引在管理、組織與儲存資料,為了讓其可以理想地工作,一個索引必須是固定大小的,所以若是處理靜態資料,那麼就相當適合且黑皮,因為資料不會隨著時間增加

然而,若當今天資料是會隨時間改變的型態,那就會複雜許多,其中一種解法就是把索引的名稱加上時間的資訊,舉例而言,今天所收集的資料就把索引名稱取做 data-2020-09-16,明天的就取做 data-2020-09-17

如此一來,在 Kibana 中,先指明索引樣式(index pattern),再選定想要查詢資料的日期區間,就可以快速地做呈現了!

資料集

讓我們來假設一個情境:有一個社群軟體,讓你可以在網路上傳送訊息,而每一則訊息都會記錄一個日誌。

舉例來說:今天有一個人叫小英,住在台灣,有著 817 個追蹤者,今天小英出門旅遊時,在高雄傳給小魚一則訊息,裡面主題包含了:#美豬、#爐渣,那麼這則日誌儲存的資訊可能會長得像下面這樣:

{
  "message_id": 1,
  "user.name": "小英",
  "user.geo.country": "台灣",
  "user.geo.city": "台北",
  "user.nb_of_followers": 817,
  "subjects": "#美豬 #爐渣",
  "number_of_subjects": 2,
  "likes": 94,
  "geo.country": "台灣",
  "geo.city": "高雄"
}

上面這種以事件(Event)為中心所儲存的資料,有著它的優點,卻也有一些限制。例如說我今天想要計算每個使用者平均被點讚的次數,這樣 事件中心(event-centric) 的資料就變得比較困難。

若要解決這種問題,我們可以定期地執行一些 script ,將這樣事件中心的資料轉變成 實體中心(entity-centric),以剛才的例子來說,我們就可以把所有小英這個使用者的訊息拿出來,轉變成另外一種文件資料做儲存:

{
  "user_id": 3,
  "name": "小英",
  "geo.country": "台灣",
  "geo.city": "台北",
  "nb_of_followers": 817,
  "average_likes": 66,
  "salary": 49000,
  "occupation": "教授"
}

Kibana vs Elasticsearch

Kibana 是一個功能強大的工具,但它不儲存資料。

如果需要儲存資料,需要存進 Elasticsearch,當資料儲存在 Elasticsearch 中,Kibana 便可以利用它們來創建視覺化圖表。

今日心得與短結

總算進入到 Kibana 的篇章啦!對於整個 Elastic Stack 也逐漸越來越了解什麼是什麼,要拿來幹嘛,有種便便越來越順暢的感覺ㄎㄎ

今天我們先了解在 Kibana 視覺化資料之前,到底資料是以什麼樣子做儲存的,先知道源頭是怎樣後,明天我們就要開始來實作操作 Kibana on Elastic Cloud 囉!


上一篇
【ES新手,破門而入!】Day15 - 當 APM 來敲門之入口 B
下一篇
【ES新手,破門而入!】Day17 - 戴上 Kibana 看著資料的南半球
系列文
ES 新手,破門而入!!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言