Log 收集和檢索:ELK

ELK 介紹: 

  • ELK 由 Elasticsearch、Logstash、Kibana 三個工具組成,提供 Log 收集、分析、查詢和視覺化管理功能
  • Elasticsearch - 搜索與分析引擎,用於存儲和搜索大數據,支援全文檢索和統計分析
  • Logstash - 資料收集與處理工具,從多種來源收集 Log,進行格式解析和轉換
  • Kibana - 視覺化分析工具,提供 DashBoard 實時監控,支援快速搜索和動態篩選

Elasticsearch 特點

  • 全文檢索 - 支援自然語言處理、分詞、模糊查詢和高亮顯示
  • 分散式架構 - 支援高可用高擴展性,能在集群中分布數據與負載
  • 即時數據處理 - 實現低延遲搜索和索引,適合即時數據檢索與更新
  • 數據存儲 - 以 JSON 文件的形式存儲結構化或非結構化數據
  • 聚合分析 - 提供數據的分組、統計與度量分析,如平均值、總和等
  • 多語言支持 - 支援各種語言的分詞處理與搜索功能

Filebeat 特點

  • Log 收集 - 收集應用程序和系統生成的日誌文件,支持多行日誌
  • 實時數據輸送 - 將數據從來源直接傳到 Elasticsearch、Logstash 等
  • 輕量過濾 - 提供 Processors(如添加字段、刪除字段、解析 JSON 等)進行基礎數據處理

Filebeat 設定


Logstash 特點:

  • 資料收集 - 支援多種資料源收集數據,支援實時或批量數據處理
  • 數據解析與轉換 - 支援格式轉換並能使用過濾器插件解析與結構化數據
  • 資料輸出 可將數據同時輸出到Elasticsearch、Kibana或其他系統
  • 管道化處理 - 基於 Input、Filter 和 Output 架構構建靈活的數據處理管道

Logstash  設定

config
 
pipeline
template

Logstash V.S Filebeat

 

特性

Filebeat

Logstash

定位

輕量級數據收集器

全功能數據收集和處理框架

資源占用

輕量,占用少
適合分散式部署

資源需求高
適合集中處理

處理能力

基礎處理
(Processors)

支持複雜數據處理
(Filter 插件)

適用場景

收集和簡單處理數據並傳輸

數據解析、轉換和格式化

易用性

配置簡單,適合快速部署

配置靈活,但較複雜

性能

傳輸快,低延遲

適合處理複雜數據但性能較低


Kibana 特點

  • 數據可視化 - 支持各種圖表、儀表板和地圖視覺化
  • 管理設定 - 管理索引模式和數據索引
  • 數據分析 - 支持數據聚合、分時分析
  • 警報與監控定 - 設置警報,監控 Elasticsearch 集群性能
  • 日誌與指標分析 - 分析日誌和指標數據,支持高效過濾和查詢

ELK 架構



ELK 優點

  • 高效的全文搜索與分析 - Elasticsearch 作為核心,提供快速、準確的全文搜索和聚合分析功能,對於處理大量數據非常高效
  • 靈活的數據輸入 - Logstash 支援多種數據輸入來源(Filebeat、系統日誌、API、數據庫等),並能進行複雜的數據過濾與轉換
  • 強大的可視化能力 - Kibana 提供多種數據可視化工具,支持儀表板、圖表等多種格式,易於構建實時監控面板

ELK 缺點

  • 資源消耗大 - Elasticsearch 和 Logstash 都需要較多的 CPU、內存和磁碟資源,對硬體配置要求高
  • 不適合深度數據分析 - 雖然 Elasticsearch 支援聚合,但對於複雜查詢或大規模數據分析相對有限
  • 不支持即時寫入大量數據 - Elasticsearch 適合近實時操作,但高頻數據寫入可能導致性能下降

ELK docker-compose.yml

Elasticsearch

yml  檔使用單節點模式,並且定義可使用的資源上下限,適合在有限的資源使用

Kibana
yml 檔須設定 Elasticsearch 服務連線,讓 Kibana 用於資料的查詢和解析

Filebeat

yml 檔的 volume 須綁定 filebeat 設定檔,和要解析的 log 資料夾位置,圖中設定為 laravel 的 log 資料夾位置

Logstash

yml 檔的 volume 須綁定 logstash 相關設定檔,並且設定 Logstach 和關聯 Elasticsearch 的 port 參數

Kibana 設定和搜尋














0 Comments:

張貼留言