ELK+Kafka+Beats實現海量日志收集平台(一)


            ELK+Kafka+Beats實現海量日志收集平台(一)

 

一、應用場景

  利用ELK+Kafka+Beats來實現一個統一日志平台,它是一款針對大規模分布式系統日志的統一采集、

存儲、分析的APM 工具。在分布式系統中,有大量的服務部署在不通的服務器上,客服端的一個請求查

詢,就可能會調用后端多個服務,每個服務之間可能會相互調用或一個服務又會調用其它服務,最終才

將請求的結果返回,匯總展現到前端頁面上。假若這其中的某個環節發生異常,開發運維人員很難准確

定位這個問題到底是由哪個服務調用造成的, 統一日志平台的作用就是追蹤每個請求的完整調用鏈路,

收集調用鏈路上每個服務的性能、日志數據,方便開發運維人員能夠快速發現問題,定位問題。

  統一日志平台通過采集模塊、傳輸模塊、存儲模塊、分析模塊實現日志數據的統一采集、存儲和分

析,結構圖如下:

          

二、實現原理

  “ ELK”是三個開源項目的縮寫:Elasticsearch,Logstash和Kibana。也稱ELK Stack,能夠可靠,安

全地從任何來源以任何格式獲取數據,然后進行實時搜索,分析和可視化。Elasticsearch是搜索和分析引

擎,開源的,分布式,RESTful,基於JSON的搜索引擎。它易於使用,可擴展且靈活。Logstash是服務器

端的數據處理管道,它同時從多個源中提取數據,進行轉換,然后將其發送到類似Elasticsearch的“存儲”

中。Kibana允許用戶在Elasticsearch中使用圖表將數據可視化。

        

  Beats 是一個免費且開放的平台,集合了多種單一用途數據采集器。它們從成百上千或成千上萬台機

器和系統向 Logstash 或 Elasticsearch 發送數據。Beats可以將數據直接發送到Elasticsearch或通過 Log-

stash 發送,然后在Logstash中可以進一步處理和過濾數據,然后再在Kibana中進行可視化 。

Beats架構圖如下:

              

  要實現海量日志數據收集分析,首先要解決的問題就是如何處理海量的數據信息,本案例中利用Kafka

結合Beats、Logstash來實現分布式消息隊列平台,其中采用Beats來采集日志數據,也就相當於是Kafka消

息隊列中的Producer來生產消息,然后將消息發送到Kafka(相當於消息隊列的Broker),然后將日志數據

發送到Logstash(扮演消費者-Consumer)進行分析過濾等處理。再把從Logstash中處理之后的數據存儲到

Elasticsearch中,最終通過Kibana來可視化日志數據。

該過程架構圖如下:

    

   其中Beats主要有以下幾種:

        Filebeat      : 用於收集日志文件

        Winlogbeat : 用於收集Windows事件日志

        Metricbeat  : 用於指標

        Packetbeat : 用於收集網絡流量數據

  由於我們要采集日志來進行分析管理,所以我們使用Beats中的filebeat來進行日志采集

  通過上面的架構思路,大致清楚了日志收集分析顯示到底要干什么事兒?接下來再通過下圖進一步將

該流程具體梳理下

       

  本案例通過編寫一個簡單的SpringBoot工程來生產日志數據,也就是圖中的Log4j2 Appender來作為

filebeats的數據源(filebeats要從哪兒獲取日志文件),使用Log4j2來進行日志記錄而不是Spring自帶的

Slf4j記錄是因為Log4j2的性能要優於Slf4j。圖中把生成的日志分為了all.log、error.log 兩類日志,all.log用

於記錄應用服務產生的所有日志記錄,error.log主要用於記錄warn、error兩類的錯誤日志。error.log日志

只有當應用服務報錯的時候才進行記錄,這樣以便日后進行分析告警。

  ELK官方參考文檔

  ElasticSearch官網文檔 https://www.elastic.co/cn/elasticsearch/

  Logstash官網文檔 https://www.elastic.co/cn/logstash

  Kibana 官網文檔  https://www.elastic.co/cn/kibana

  Beats 官網文檔 https://www.elastic.co/cn/beats/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM