Elasticsearch Kibana ELK stack

ELK基礎實務 3

蕭宇翔 Rickey Xiao 2025/07/19 16:46:47
13

主題:ELK基礎實務 3

 

作者:Rickey

內容:基本理論HA架構原理,API操作

 

1. 前言

前段時間我們進行了filebeat的啟動及modules的設定

讓kibana的報表更完善了,並且也了解水平擴充的基本操作

這次我們從理論面出發,了解elasticsearch的理論基礎

並且在沒有kibana的情況下,透過call API來進行基本的叢集檢查

 

2. 介紹(產品面)

Elasticsearch:

主要作為log收集後,儲存的地方

在Elasticsearch的叢集架構中,要知道所謂的HA架構

 

2.1 HA高可用性架構

單節點的問題顯而易見,如果節點失去功能,那將會丟失資料

更慘的是,如果整個節點消失,資料也會跟著消失,也因此我們需要建立HA架構

Elasticsearch的高可用性來自於:shard(分片)& replica(副本)

當我們建立多個節點時,資料會被分為多個shard儲存在多個節點

每個shard都會有對應的replica,會分布在與shard「不同」的節點上

那當一台節點失效時,replica就會啟動,將消失的shard復原

這樣整個叢集就可以維持運作!!

以下是一個簡易的節點發生故障時會發生的事情

shard=3,replica=2

假設P0,P1,P2是資料A分出來的分片

P0有兩個replica,分別是node2和node3的R0,以此類推

node1壞掉後,P0蒸發,因此P0的replica會晉升為主要的分片

所以我們看到node2的R0變成P0了

這樣我們就可以確保原本的資料A還完整了!

 

3. 介紹(產品面)

Filebeat:

主要收集來自應用程式產生的log,這些log會儲存在地端檔案夾目錄中

可能的檔案類型是.log、.txt或是.csv等

透過Filebeat我們可以將指定目錄夾,並定時的讀取裡面的資料,再丟給Elasticsearch、Logstash或是buffer做後續的處理

 

4. 善用Elasticsearch的API

我們可以在kibana的Dev Tools操作API來觀察Elasticsearch的叢集狀況

以下是一些基本的檢查

GET /_cluster/health

GET /_cluster/stats

GET /_cat/nodes?v

GET /_cat/indices?v

GET /_cat/indices?v&s=store.size:desc #desc是降冪的意思

在執行後我們可以看到類似這樣的訊息

 

5. 當Kibana無法用時,該如何是好?

那我們可以透過curl的指令,直接對elasticsearch呼叫API

curl -X GET "https://127.0.0.1:9200/_cluster/health" -k -u elastic:<你的密碼>

就會有一坨輸出

這個情境在實務上很常遇到,我們不會一直使用kibana因為會反覆的切換視窗

也可能因為地點局限和權限問題,我們只能使用terminal

 

6. 結語&Recap

Recap:介紹了shard&Replica的運作,以及與HA的關係。介紹基本的檢查API

本篇文章注重再讓讀者了解HA的重要性,並且降低讀者對kibana的依賴性,進而使用terminal進行操作

希望透過這次的文章,讓讀者更了解elasticsearch在產品中的定位,以及對產品的重要性

也可以有更多元的監控手段

蕭宇翔 Rickey Xiao