ELK Stack 通常指由三個核心元件組成的日誌與搜尋分析平台:Elasticsearch、Logstash、Kibana(後來常連同 Beats 一起稱為 Elastic Stack)。它用於集中化收集、儲存、搜尋與可視化各系統與應用的日誌與事件資料,支援可觀察性、SIEM、安全分析與商業分析等情境。
元件與角色
- Elasticsearch:分散式全文檢索與分析引擎,基於 Lucene,支援近即時索引與 JSON 文件,擅長高維文本與結構化資料的搜尋與聚合。
- Logstash:伺服器端資料處理管線,從多來源擷取、轉換、清洗,輸出至 Elasticsearch 等目的地;實務上亦常被 Fluentd 等輕量替代方案取代。
- Kibana:可視化與探索介面,建立儀表板、查詢與告警,用於分析索引中的資料並協助營運監控與故障診斷。
- Beats:邊緣代理(Filebeat、Metricbeat 等)負責在主機上收集日誌與指標並送入管線(常與 Logstash 或直接送 Elasticsearch)。
- 邊緣收集:Beats 收集系統與應用日誌與指標,傳送原始資料到 Logstash 或直接到 Elasticsearch。
- 處理與轉換:Logstash 進行過濾、解析(如 Grok)、欄位正規化與增 enrich,再輸出至索引儲存。
- 儲存與搜尋:Elasticsearch 進行索引、聚合、全文檢索與分散式查詢,支援水平擴充與高可用設計。
- 視覺化與告警:Kibana 製作儀表板、探索查詢和設定告警,支援可觀察性與安全場景套件。
常見使用情境
- 可觀察性:集中化應用與基礎設施日誌、指標、APM 追蹤以進行效能監控與故障排除。
- 安全分析與 SIEM:彙整防火牆、端點與雲端事件,進行查核、威脅獵捕與告警。
- 商業與網站分析:搜尋、聚合與視覺化網站點擊流、交易與行為數據。
架構與部署要點
- 小型環境:Beats → Elasticsearch → Kibana 的簡化架構即可快速上線;需要轉換時加入 Logstash。
- 生產級:多節點 Elasticsearch、可能多個 Logstash、加上緩衝/訊息佇列(如 Kafka、Redis)、反向代理與身分驗證層,並規劃跨區域複寫與備援。
- 管理型替代:若不想自行維運與調校,可考慮雲端託管或相容的託管服務以減少維運負擔。
生態與授權注意
- Elastic 於 2021 年調整 Elasticsearch 與 Kibana 的授權為 Elastic License/SSPL,新版本不再是 Apache 2.0;社群維持 ALv2 路線的分支為 OpenSearch 專案(Elasticsearch/Kibana 分支)。規劃時須留意授權與相容性需求。
快速上手建議
- 本機/實驗:使用現成的 Docker Compose 範本快速啟動整套堆疊,便於測試管線與儀表板。
- 正式導入:先明確定義日志結構與保留策略,設計索引生命週期管理(ILM),估算儲存與查詢負載,再決定節點規格與分片配置。