03.02 ELK Stack系列之基礎篇(一)

1,核心組成

ELK是一個應用套件,由Elasticsearch、Logstash、Kibana三部分組成,簡稱ELK。它是一套開源免費、功能強大的日誌分析管理系統。ELK可以將我們的系統日誌、網站日誌、應用系統日誌等各種日誌進行收集、過濾、清洗、然後進行集中存放並可用於實時檢索、分析。這三款軟件都是開源軟件,通常配合使用,而且又先後歸於Elastic.co公司名下,故又稱為ELK Stack。那麼接下來,我們將從此開源的架構ELK說起,然後一步步推出我們自己的產品Tencent ES系列。下圖為ELK Stack的基本組成。

ELK Stack系列之基礎篇(一) - ELK 架構介紹

ELK Stack架構基本組成

2、Elasticsearch介紹

Elasticsearch是一個實時的分佈式搜索和分析引擎,它可以用於全文搜索,結構化搜索以及分析,採用Java語言編寫。目前,官網最新的版本是Elasticsearch 7.6.0.那麼同時,Elasticsearch 是一個分佈式的 RESTful 風格的搜索和數據分析引擎,能夠解決越來越多的用例。它作為 Elastic Stack 的核心,它集中存儲您的數據,幫助您發現意料之中以及意料之外的情況。要想獲取最新的軟件版本和文檔支持。我們可以通過訪問如下鏈接獲取相關幫助。https://www.elastic.co/cn/downloads/elasticsearch

它有以下主要特點:

l 實時搜索,實時分析

l 分佈式架構、實時文件存儲,並將每一個字段都編入索引

l 文檔導向,所有的對象全部是文檔

l 高可用性,易擴展,支持集群(Cluster)、分片和複製(Shards和Replicas)

l 接口友好,支持JSON

l 可以擴展到上百臺服務器,輕鬆處理PB級結構化或非結構化數據

l 基於Apache Lucene(TM)的開源搜索引擎,讓全文搜索變得簡單

正是如此,基於以上這些原因,讓我們的Elasticsearch被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎。世界上眾多知名互聯網公司都將其作為自己的搜索引擎。

3,Logstash介紹

Logstash是一款輕量級的、開源的日誌收集處理框架,它可以方便的把分散的、多樣化的日誌蒐集起來,並進行自定義過濾分析處理,然後傳輸到指定的位置,比如某個服務器或者文件。Logstash採用JRuby語言編寫,而Jruby的基礎又是Java開發而來的。目前最新的版本是Logstash 7.6.0.我們可以通過訪問如下鏈接獲取相關幫助。https://www.elastic.co/cn/downloads/logstash它的主要特點如下:

Logstash的理念很簡單,從功能上來講,它只做三件事情:

l input:數據收集

l filter:數據加工,如過濾,改寫等

l output:數據輸出

別看它只做三件事,但通過組合輸入和輸出,可以變幻出多種架構實現多種需求。Logstash內部運行邏輯如下圖所示:


ELK Stack系列之基礎篇(一) - ELK 架構介紹

Logstash內部運行圖

其中,每個部分含義如下:

l Shipper:主要用來收集日誌數據,負責監控本地日誌文件的變化,及時把日誌文件的最新內容收集起來,然後經過加工、過濾,輸出到Broker

l Broker:相當於日誌Hub,用來連接多個Shipper和多個Indexer。

l 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的數據狀態與更改。我們可以通過訪問如下鏈接獲取相關幫助https://www.elastic.co/cn/downloads/kibana

5、ELK工作流程

一般都是在需要收集日誌的所有服務上部署logstash,作為logstash shipper用於監控並收集、過濾日誌,接著,將過濾後的日誌發送給Broker,然後,Logstash Indexer將存放在Broker中的數據再寫入Elasticsearch,Elasticsearch對這些數據創建索引,最後由Kibana對其進行各種分析並以圖表的形式展示。


ELK Stack系列之基礎篇(一) - ELK 架構介紹

ELK工作流程

ELK工作流程說明:有些時候,如果收集的日誌量較大,為了保證日誌收集的性能和數據的完整性,logstash shipper和logstash indexer之間的緩衝器(Broker)也經常採用kafka來實現。

6、本節小結:

那麼本節我主要先從開源框架ELK入手,逐一闡述了ELK的各軟件組成以及其工作流程。從上面的闡述中我們要知道了ELK工作原理以及重點要去掌握Elastisearch到底能做什麼?作為ELK生態的核心,後面我們將著重來講ES的各特徵以及騰訊雲自己的ES產品的選擇與使用。


分享到:


相關文章: