集群日誌收集架構ELK

前言

前幾篇我們介紹了項目中

如何使用logback組件記錄系統的日誌情況;現在我們的系統都是分佈式的,集群化的,那就代表著我們的應用會分佈在很多服務器上面;那應用的日誌文件就會分佈在各個服務器上面。

問題

突然有一天我們系統出現了問題,我們第一時間想到的是先要判斷到底哪個服務出現了問題;我們的技術人員就連接生產環境服務器,查看服務器上面的應用日誌。

那麼多的服務器,技術人員這個時候就會很抓狂,一個個的查看分析日誌,是比較愚蠢的方法。那有什麼好的方式呢?今天老顧給大家介紹常規的方案。

ELK方案

ELK 是elastic公司提供的一套完整的日誌收集以及展示的解決方案,是三個產品的首字母縮寫,分別是ElasticSearch、Logstash 和 Kibana。

ElasticSearch簡稱ES,它是一個

實時的分佈式搜索和分析引擎,它可以用於全文搜索,結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。

Logstash是一個具有實時傳輸能力的數據收集引擎,用來進行數據收集(如:讀取文本文件)、解析,並將數據發送給ES

Kibana為 Elasticsearch 提供了分析和可視化的 Web 平臺。它可以在 Elasticsearch 的索引中查找,交互數據,並生成各種維度表格、圖形。

這三款軟件都是開源軟件,通常配合使用,而且又先後歸於Elastic.co公司名下

集群日誌收集架構ELK

ELK的用途

傳統意義上,ELK是作為替代Splunk的一個開源解決方案。Splunk 是日誌分析領域的領導者。日誌分析並不僅僅包括系統產生的錯誤日誌,異常,也包括業務邏輯,或者任何文本類的分析。而基於日誌的分析,能夠在其上產生非常多的解決方案,譬如:

1.問題排查。我們常說,運維和開發這一輩子無非就是和問題在戰鬥,運維和開發能夠快速的定位問題,甚至防微杜漸,把問題殺死在搖籃裡。日誌分析技術顯然問題排查的基石。

2.監控和預警。 日誌,監控,預警是相輔相成的。基於日誌的監控,預警使得運維有自己的機械戰隊,大大節省人力以及延長運維的壽命。

3.關聯事件。多個數據源產生的日誌進行聯動分析,通過某種分析算法,就能夠解決生活中各個問題。比如金融裡的風險欺詐等。

4.數據分析。 這個對於數據分析師,還有算法工程師都是有所裨益的。

ElasticSearch介紹

ElasticSearch是一個實時的分佈式搜索和分析引擎,採用java語言編寫,現在的最新版本已經ElasticSearch7.5.x,他的主要特點如下:

實時搜索、實時分析

分佈式架構、實時文件存儲

文檔導向,所有對象都是文檔

高可用,易擴展,支持集群,分片與複製

接口友好,支持json

Logstash介紹

logstash是一款輕量級的、開源的日誌收集處理框架,它可以方便的把分散的、多樣化的日誌收集起來,並進行自定義的過濾分析處理,然後輸出到指定的位置(如:es)。

Logstash工作原理

集群日誌收集架構ELK

如上圖,Logstash的數據處理過程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs對數據格式進行處理。這四個部分均以插件形式存在,用戶通過定義pipeline配置文件,設置需要使用的input,filter,output, codec插件,以實現特定的數據採集,數據處理,數據輸出等功能

(1)Inputs:用於從數據源獲取數據,常見的插件如file, syslog, redis, beats等

(2)Filters:用於處理數據如格式轉換,數據派生等,常見的插件如grok, mutate, drop, clone, geoip等

(3)Outputs:用於數據輸出,常見的插件如elastcisearch,file, graphite, statsd等

(4)Codecs:Codecs不是一個單獨的流程,而是在輸入和輸出等插件中用於數據轉換的模塊,用於對數據進行編碼處理,常見的插件如json,multiline

Kibana介紹

Kibana是一個開源的分析和可視化平臺,設計用於和Elasticsearch一起工作。

可以用Kibana來

搜索,查看,並存儲在Elasticsearch索引中的數據進行交互。

可以輕鬆地執行高級數據分析,並且以各種圖標、表格和地圖的形式可視化數據

Kibana使得理解大量數據變得很容易。它簡單的、基於瀏覽器的界面使你能夠快速創建和共享動態儀表板,實時顯示Elasticsearch查詢的變化。

什麼是Filebeat

雖然我們的logstash功能已經非常強大了,裡面包含採集,過濾,轉換等功能;正因為有很多的功能,導致了它比較耗資源。其實在我們應用服務器端只需要採集日誌功能就行了,沒有必要logstash其他的功能;所以Filebeat等beat組件就出現了,它們比較小巧,而且不耗資源,也完全夠用。

Filebeat是一個輕量級的託運人,用於轉發和集中日誌數據。Filebeat作為代理安裝在服務器上,監視您指定的日誌文件或位置,收集日誌事件,並將它們

轉發到Elasticsearch或 Logstash進行索引。

Filebeat的工作原理:啟動Filebeat時,它會啟動一個或多個輸入,這些輸入將查找您為日誌數據指定的位置。對於Filebeat找到的每個日誌,Filebeat啟動一個收集器。每個收集器為新內容讀取單個日誌,並將新日誌數據發送到libbeat,libbeat聚合事件並將聚合數據發送到您為Filebeat配置的輸出。

官方流程圖如下:

集群日誌收集架構ELK

ELK常見架構

最簡單的ELK應用架構

集群日誌收集架構ELK

上面架構是簡單粗暴的架構,這種架構對數據源服務器(即應用服務器)性能影響較大,因為Logsash是需要安裝和運行在需要收集的數據源服務器(即應用服務器)中,然後將收集到的數據實時進行過濾,

過濾環節是很耗時間和資源的,過濾完成後才傳輸到ES中。下面是優化後的架構圖:

集群日誌收集架構ELK

用filebeat採集日誌有效降低了收集日誌對業務系統的系統資源的消耗。再通過logstash服務器可以過濾,轉換日誌。這樣即滿足了日誌的過濾轉換,也保障了業務系統的性能。

當然上面的架構中,是支持集群的

如果日誌文件量特別大,以及收集的服務器日誌比較多;這樣架構中需加入消息中間件做一下緩衝

集群日誌收集架構ELK

此架構適合大型集群,海量數據的業務場景,消息隊列kafka集群架構有效保障了收集數據的安全性和穩定性,而後端logstash和es均採用了集群模式搭建,從整體上提高了ELK的系統的高效性,擴展性和吞吐量。

總結

今天老顧介紹了ELK的基本介紹,帶領了我們小夥伴們進入了 Elastic Stack技術棧,也開啟了小夥伴們大數據技術的大門。上面介紹的幾個技術組件,延展下去會有很多技術點。老顧下面會一一介紹分享給大家,小夥伴們也可以自行上網學習。謝謝!!!

---End---


最近老顧上傳了微服務網關的分享課程,請大家多多支持

1基於RocketMq的SpringCloud Stream框架實戰入門

2、如何搭建消息中間件應用框架之SpringCloud Stream

3面試必備:網關異常了怎麼辦?如何做全局異常處理?

4Gateway網關係列(二):SpringCloud Gateway入門實戰,路由規則

5Gateway網關係列開篇:SpringCloud的官方網關Gateway介紹

6API網關在微服務架構中的應用,這一篇就夠了

7學習Lambda表達式看這篇就夠了,不會讓你失望的哦(續篇)

8Lambda用在哪裡?幾種場景?

9、為什麼會出現Lambda表達式,你知道嗎?

10、不說“分佈式事務”理論,直接上大廠阿里的解決方案,絕對實用

11、女程序員問到這個問題,讓我思考了半天,Mysql的“三高”架構

12、大廠二面:CAP原則為什麼只能滿足其中兩項?而不能同時滿足

13、阿里P7二面:聊聊零拷貝的原理

14、秒殺系統的核心點都在這裡,快來取

15、你瞭解如何利用token方式實現分佈式Session嗎?

16、Mysql索引結構演變,為什麼最終會是那個結構呢?讓你一看就懂

17、一場比賽涉及到的知識,用通俗易通的方式介紹併發協調

18、企業實戰Redis全方面思考,你思考了嗎?

19、面試題:Thread的start和run的區別

20、面試題:什麼是CAS?CAS的作用以及缺點

21、如何訪問redis中的海量數據?避免事故產生

22、如何解決Redis熱點問題?以及如何發現熱點?

23、如何設計API接口,實現統一格式返回?

24、你真的知道在生產環境下如何部署tomcat嗎?

25、分享一線互聯網大廠分佈式唯一ID設計 之 snowflake方案

26、分享大廠分佈式唯一ID設計方案,快來圍觀

27、你想了解一線大廠的分佈式唯一ID生成方案嗎?

28、你知道如何處理大數據量嗎?(數據拆分篇)

29、如何永不遷移數據和避免熱點? 根據服務器指標分配數據量(揭秘篇)

30、你知道怎麼分庫分表嗎?如何做到永不遷移數據和避免熱點嗎?

31、你瞭解大型網站的頁面靜態化嗎?

32、你知道如何更新緩存嗎?如何保證緩存和數據庫雙寫一致性?

33、你知道怎麼解決DB讀寫分離,導致數據不一致問題嗎?

34、DB讀寫分離情況下,如何解決緩存和數據庫不一致性問題?

35、你真的知道怎麼使用緩存嗎?

36、如何利用鎖,防止緩存擊穿?重構思想的重要性

37、海量訂單產生的業務高峰期,如何避免消息的重複消費?

38、你知道如何保障生產端100%消息投遞成功嗎?

39、微服務下的分佈式session該如何管理?

40、阿里二面:filter、interceptor、aspect應如何選擇?很多人中招

41、互聯網架構重要組員CDN,很多高級開發都沒有實操過,來看這裡

42、阿里二面:CDN緩存控制原理,看看能不能難住你

43、SpringCloud Alibaba之Nacos多環境多項目管理

44、SpringCloud Alibaba系列之Nacos配置中心玩法

45、SpringCloud Alibaba之Nacos註冊中心

46、SpringCloud Plus版本之SpringCloud Alibaba

47、SpringCloud Alibaba之Nacos集群、持久化

48、SpringCloud Alibaba之Nacos共享配置、灰度配置

49、SpringCloud Alibaba之Sentinel工作原理

50、SpringCloud Alibaba之Sentinel流控管理

51、SpringCloud Alibaba之Sentinel降級管理

52、SpringCloud Alibaba之Sentinel熱點參數限流

53、SpringCloud Alibaba之Sentinel的API實戰


分享到:


相關文章: