ELK集中日志收集與分析


背景介紹

      項目采用分布式框架(Dubbo、Zookeeper)進行開發,項目初期,為了按計划上線就沒有搭建日志收集分析平台,日志都保存在各個服務器本地。隨着項目推進,基礎服務越來越多,各個服務都是集群部署,服務器的數量也快速增長,此時就暴露出了很多的問題:

  • 問題排查困難,查詢一個服務的日志,需要登錄多台服務器;
  • 日志串接困難,一個流程有多個節點,要把整個流程的日志串接起來工作量大;
  • 運維管理困難,不是每個同事都有登錄服務器查看日志的權限,但又需要根據日志排查問題,就需要有權限的同事下載日志后給到相應負責的同事。
  • 系統預警困難,無法實現服務出現異常后,及時通知到相應的負責人。

所以需要搭建一套集中式的日志收集、存儲、分析系統,將所有節點的日志統一收集、管理。

 

經技術調研,ELK提供了一套解決方案,能解決上述問題,下面簡單介紹一下ELK。

 一、ELK簡介

ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana ,

  • Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等
  • Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責將收到的各節點日志進行過濾、修改等操作在一並發往elasticsearch上去。
  • Kibana可以為 Logstash 和 ElasticSearch 通過報表、圖形化數據進行可視化展示 Web 界面,可以幫助匯總、分析和搜索重要數據日志。

二、解決方案分析:

方案一:

 

 

Logstash部署到每個節點,收集相關的日志,並經過分析過濾后發送到Elasticsearch進行存儲,Elasticsearch將數據以分片的形式壓縮存儲,通過kibana對日志進行圖形化的展示,

優點:此架構搭建簡單,容易上手

缺點:1、每個節點部署logstash,運行時占用CUP、內存大,會對節點性能造成一定的影響;

           2、沒有將日志數據進行緩存,存在丟失的風險。

 

方案二:

 

 

logstash agent 監控並過濾日志,將過濾的日志內容發給 kafka或redis,logstashServer 將日志收集一起交給elasticsearch。引入了消息隊列機制作為緩存池,即使logstashServer出現異常,由於日志暫存在kafaka消息隊列中,能避免日志數據丟失,但是還是沒有解決性能問題。

 

方案三:

 

Filebeat是一個日志文件托運工具,做為一個agent安裝到服務器上,filebeat會監控日志目錄或者指定的日志文件,追蹤讀取這些文件;

將filebeat 作為日志收集器,相比logstach,filebeat更輕量,占用資源更少,filebeat采集日志后,發送到消息隊列kafaka或redis暫存起來,起到一個緩沖池的作用,能緩解日志峰值處理壓力;

然后logstash去消息隊列中獲取,利用filter功能過濾分析,然后存儲到elasticsearch中,再通過kibana圖形化直觀展示。缺點就是部署較復雜,如果是正式環境還要考慮集群部署,避免單點。

該選擇哪個方案需根據項目實際情況考慮,沒有最完美的方案,只有最適合的方案。


免責聲明!

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



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