[ELK] Hello! ELK
鼠年全馬鐵人挑戰 - WEEK 15
前言
最近因為實習環境需要接觸ELK,故藉此機會來筆記一下,加深學習印象。
什麼是ELK?
其實大家所稱的ELK並非一套軟體,而是由三個不同的開源軟體的字首縮寫所構成的套件,三者為:
- Logstash: 蒐集日誌(log),為日誌資料處理系統,可同時從多個來源獲取資料
- Elasticsearch: 強大的搜尋功能
- Kibana: 將資料視覺化的報表軟體
ELK時常被應用在解決搜尋、紀錄、保安分析、指標分析、營運分析等問題,越來越多企業採用ELK,可見此篇文章的整理。
ELK workflow
ELK的整體運作流程可參考下方圖片:
圖片源
整體運作流程是將設備的日誌,透過檔案或系統的log傳送給Logstash進行解析,再存入ElasticSearch進行查詢/統計,最後由Kibana將統計結果以資料視覺化呈現。
安裝
對ELK有初步認識後就來動手安裝吧!
Elasticsearch
至官方載點找到適合自己作業系統的檔案進行下載,Mac的話,下載完tar.gz
的檔案後,至終端機執行下方指令解壓縮
1 |
|
接著切換到elasticsearch-7.6.2
目錄下執行bin
資料夾下的elasticsearch
執行檔
1 |
|
測試是否安裝成功
預設會開在port號9200,到另外一個終端機上執行
1 |
|
如果成功的話會回傳一個JSON格式的資料
Kibana
至官方載點找到適合自己作業系統的檔案進行下載,Mac的話,下載完tar.gz
的檔案後,至終端機執行下方指令解壓縮
1 |
|
接著切換到kibana-7.6.1-darwin-x86_64
目錄下執行bin
資料夾下的kibana
執行檔
1 |
|
注意: 要先把elasticsearch 給run起來後再起kibana
預設會開在port號5601,訪問http://localhost:5601
可確任是否有成功啟動kibana
LogStash
Logstash 是一套 Log 分析框架,可以幫助我們處理各式各樣的 Log。官方載點
Elasticsearch basic architecture
前面安裝完ELK後,接著要討論Elasticsearch的基礎架構
Node 節點
上圖的每個節點(Node) 就是一個Elasticsearch的**實例(Instance)**,用於儲存資料,一台機器可以同時啟用多個Node。
Cluster 叢集
而叢集(Cluster) 是由一個或者多個擁有相同cluster name配置的Node所組成,在預設的情況下,每個Cluster之間是互相獨立的。
當然,如果要跨叢集(Cross-Cluster)進行搜尋也是可以,不過實際上比較少會這樣使用,通常同時啟用多個Cluster是為了不同目的,如:一個Cluster用於搜尋電商的AP,另一個Cluster則負責AP的效能管理(Performance Management)。
Document 文檔
稱作文檔,是搜尋資料的最小單元,以JSON作為儲存的資料格式,在一個Index
或者Type
中,可以存儲很多個document
。
index 索引
index
在Elasticsearch中相當於一個資料庫,所以index
底下會包含多個document
整理幾個重要的相關名詞
index
: 在Elasticsearch中index
相當於一個資料庫。type
: 相當於資料庫中的一個表。id
: 類似資料庫的**主鍵(Primary Key)**,作為唯一的值,document
中的的ID可以由Elasticsearch自動分配,或手動添加到index時分配給它們。node
: 節點是Elasticsearch實例(Instance),可以看成叢集(Cluster)中的一個節點。
一台機器可以執行多個實例,但是同一台機器上的實例在配置上要確保http和tcp Port不同。cluster
: 表一個叢集,叢集中有多個節點,其中有一個會被選爲主節點,這個主節點是可以通過選舉産生的,主從節點是對於集群內部來說的。document
: 稱作文檔,是搜尋資料的最小單元,可能是 log 文件中的一筆紀錄 ,以JSON(由一堆Key:Value
的資料組成)作為儲存的資料格式。在一個Index
或者Type中,可以存儲很多個document
。雖然document
是儲存在Index
中,但實際上,它必需被索引或分配到Index
中的一個Type上。