如何開始搭建Elastic Stack及使用方式介紹-上
Posted On 2022 年 5 月 6 日

圖文:Alex Lee
ELK架構說明

ElasticStack在系統架構中各司其職
- Beat負責採集資料
- Logstash負責接收及預處理資料
- Elasticsearch負責儲存及分析
- Kibana提供視覺化介面
下圖為比較大型Elasticsearch Cluster架構

- Elasticsearch:可以透過配置如node.attr.rack_id及shard allocation awareness,可以將資料分片盡可能分配至不同的機架,或是透過**ILM(Index Lifecycle Management)**依照資料生命週期(重要性)配置到對應的硬體資源節點(Hot-Warm)。
- Logstash: Logstash本身無Cluster的概念,透過啟動多個Instance進行Load Balance或是HA,在Logstash前方亦可搭配Reverse Proxy,讓Client目標端點一致,後方能夠進行Logstash的Scale up。
- Kibana: 根據需求決定是否需要HA,大多情境下Kibana的使用對象是資訊人員且頻率不是非常大量,緊急程度不會像一級系統,通常啟動一個即可。
ELK開發環境搭建
目標:建立ELK的開發環境,透過docker環境快速建立ELK架構
環境準備:請先安裝 Docker 及 Docker-compose
DEMO環境:MacOS 10.15 / Docker 19.03 / Docker-compose 1.24
- 準備Docker及ELK相關設定檔
- 檔案結構如下

- elasticsearch
- config
- elasticsearch.yml: ES設定檔,本文以Single-node方式啟動
- config

- IKAnalyzer.cfg.xml: IK Plugin設定檔,在此設定自定義字典檔及熱更新字典檔端點

- data: 準備掛載Elasticsearch實際儲存資料位置(path.data)
- dict:字典檔
- ik:IK自定義字典檔,可於啟動時載入,須定義於IKAnalyzer.cfg.xml中
- synonym:自定義同義詞字典,後續如搜尋有需要使用同義詞時可放置於此
- Dockerfile: 使用官方Image,可以再另外安裝Plugin如IK、Pinyin等

- kibana
config
- kibana.yml
Kibana啟動時會嘗試去取得Elasitcsearch的一些資訊,這邊先給予admin的帳號密碼
(在正式環境應改用指定權限的帳號,並且避免明碼,使用keystore的方式存取帳密)

- Dockerfile: 使用官方Image,可以再另外安裝Plugin

- logstash
config
- logstash.yml
可以在此逐步調試批次送出的Event數量,提高Logstash寫入效能

- pipelines.yml: 定義/宣告pipeline及其對應的pipeline設定檔

- data: 準備掛載Logstash Queue / Dead letter queue / uuid 等資料
- pipeline: pipeline設定檔
- http-pipeline.conf: 接收http input

- Dockerfile: 使用官方Image,可以再另外安裝Plugin

nginx
此處Nginx僅作為IK hot reload使用
- dict/remote-dict.dic: For IK Hot Reload 字典檔,IK約每分鐘檢查一次是否有更新
- nginx.conf: Nginx設定檔,設定存取靜態檔案路徑

專人協助
由偉康業務人員為您詳細說明偉康的解決方案,以及相關產業經驗。
Tags:ELK