一、ELK架構介紹
1、核心組成:
ELK是一個應用套件,由elasticsearch 、logstash 和 kibana三部分組件組成,簡稱ELK。他是一套開源免費、功能強大的日志分析管理系統,
ELK可以將我們的系統日志、網站日志、應用系統日志等各種日志進行收集、過濾、清洗,然后進行集中存放並可用於實時檢索分析。
2、elasticsearch 介紹:
elasticsearch是一個實時的分布式搜索和分析引擎,他可以用於全文搜索,結構化搜索以及分析,采用java語言編寫,他的主要特點如下: 1、實時搜索,實時分析 2、分布式架構、實時文件存儲,並將沒一個字段都編入索引 3、文檔導向,所有的對象全部是文檔 4、高可用,易擴展,支持集群(cluster)、分片和復制(shards和replicas) 5、接口友好,支持json
elasticsearch支持集群架構,典型的集群架構如下圖所示:
從圖中可以看出,elasticsearch集群中有master node和 slave node 兩種角色,
3、Logstash介紹
Logstash是一款輕量級的、開源的日志收集處理框架,他可以方便的把分散的、多樣化的日志搜集起來,並進行自定義過濾分析處理,然后傳輸到指定的位置,
比如某個服務器或者文件。Logstash采用JRuby語言編寫,他的主要特點如下:
Logstash的理念很簡單,從功能上來講,他只做三件事情: 1、input:數據收集 2、filter:數據加工,如過濾,改寫等 3、output:數據輸出
別看他只做三件事,單通過組合輸入和輸出,可以變幻出多種架構實現多種需求
Logstash內部運行邏輯如下圖所示:
其中,每部分含義如下:
shipper:主要用來收集日志數據,負責監控本地日志文件變化,及時把日志文件的最新內容收集起來,然后經過加工、過濾、輸出到Broker. Broker:相當於日志Hub,用來連接多個shipper和indexer. Indexer:從Broker讀取文本,經過加工、過濾、輸出到指定的介質(可以是文件、網絡、elasticsearch等)中。
redis服務器是logstash官方推薦的broker,這個broker起數據緩存的作用,通過這個緩存器可以提高Logstash shipper發送日志到 Logstash indexer的速度,
同時避免由於突然斷電等導致的數據丟失。可以實現Broker功能的還有很多軟件,例如kafka 等。
這里需要說明的是,在實際用用中,logstash自身並沒有什么角色,只是根據不同的功能,不同的配置給出不同的稱呼而已,無論是shipper還是indexer,始終只做前面提到的三件事
這里需要重點掌握的是logstash中shipper和indexer的作用,因為這兩部分是logstash功能的核心。
4、kibana介紹
kibana是一個開源的數據分析可視化平台,使用kibana可以為logstash和elasticsearch提供的日志數據進行高效的搜索、可視化匯總和多維度分析,還可以與elasticsearch搜索引擎之中的數據進行交互,他基於瀏覽器的界面操作可以快速創建動態儀表板,實時監elasticsearch的數據狀態與更改。
5、ELK工作流程:
一般都是再需要收集日志的服務上部署logstash,作為logstash shipper 用於監控並手機、過濾日志,接着,將過濾后的日志發送給broker,然后,logstash indexer將存放再broker中的數據再寫入elasticsearch 、elasticsearch對這些數據創建索引,左后kibana對其進行各 種分析並以圖表的形式展示。
有些時候,如果收集的日志量比較大,為了保證日志收集的性能和數據的完整性,logstash shipper 和 logstash indexer之間的緩沖器(broker)也經常采用kafka來實現。