Net分布式系統之七:日志采集系統(1)


  日志對大型應用系統或者平台尤其重要,系統日志采集、分析是系統運維、維護及用戶分析的基礎。

一、系統日志分類

  一般系統日志可分為三大類:

  1、用戶行為日志:通過采集系統用戶使用系統過程中,一系列的操作日志。

  2、業務變更日志:特定業務場景需要,采集某用戶在某時使用某功能,對某業務(對象、數據)進行某操作,由A變成B。

  3、系統運行日志:系統運行服務器資源、網絡及基礎中間件的情況進行定時采集日志分析。

 

二、常見日志分析應用場景

  日志采集分析是由需求驅動,根據某種場景的需要日志采集,采集的日志進行針對性的分析。一般常見的日志分析結果應用場景有:

  1、分析系統或者平台哪些功能是最受歡迎:什么時候使用最多用戶使用,某個區域、某類用戶使用最多。有利於功能推廣;有利於提升服務器資源從而提高用戶體驗。

  2、內容推薦:根據用戶平常閱讀內容,采集相關日志,並通過分析后,將用戶感興趣的內容系統自動推薦給用戶,從而提升用戶站粘性。

  3、系統審計:對於應用系統,采集操作日志、業務變更日志,有利於備查及提供相關安全審計功能。

  4、自動化運維:場景微服務架構的系統或者平台,對運維投入的要求高,自動化部署和運維,可以減少運維的工作量和壓力。系統運行環境日志采集、分析,可實現預警、服務器資源動態調配,有利於快速定位排查故障。

  不同系統的運行環境、功能應用場景及需要采集分析日志的需求也各不相同。日志內容、采集方式存在多樣性,日志數據量大,所以需要設計一套日志采集系統,滿足日志采集需求,支持便捷將分析結果反捕於應用功能。

 

三、日志采集系統總體設計

  基於以上日志采集的初步分析,尤其微服務架構中,微服務治理能力、服務負載需要依賴服務日志的采集分析,所以日志采集子系統是微服務架構的基礎支持功能。日志采集系統總體設計如下:

圖1- 日志采集系統總體框架示意圖

  如上圖所示,根據日志整個過程,系統由三部分組成:日志采集、日志存儲&分析及結果應用。日志采集主要負責提供多種方式進行采集日志;日志存儲&分析主要實現分析統一存儲和定制的場景分析日志;結果應用實現將日志分析結果提供服務接口或者默認的管理功能,供應用功能使用。

  日志采集整體過程:日志采集后,通過在線或者離線傳輸到消息隊列,由日志消費應用拉取后進行存儲。根據分析需要定制自動作業任務實現日志數據抽取、轉換、統計后,將結果數據寫入關系型數據庫。提供服務接口或者日志查詢默認管理功能進行使用。

1、日志采集

  日志采集實現三種方式進行采集日志:

  (1)WebAPI方式:實現基於http協議 restful方式采集日志數據,並發送至消息隊列。主要用於提供移動端、微信公眾號及小量日志采集使用,在NET分布式系統上可結合“API網關”使用。

  (2)Service Proxy方式:基於log4.net優秀的日志組件和消息隊列客戶端驅動,進行封裝為日志記錄服務代理,提供便捷、統一的接口供應用進行使用。支持將日志記錄到應用本地和在線實時發送至消息隊列,其中記錄到應用本地,可結合第三種方式完成應用功能日志采集的功能。

  (3)LCClient方式:實現客戶端批量抓取日志數據,發送至LCServer。LCClient客戶端基於TCP協議與LCServer服務端進行通信,基於NIO框架構建,可支持高並發處理能力。LCServer再將日志數據寫入消息隊列。

  日志采集通過提供三種方式,滿足不同的業務應用場景使用采集日志。

2、日志存儲&分析

  日志存儲及分析由五部分構成:消息隊列(MQ)、日志接收服務端(LCServer)、日志存儲(Elasticsearch)、任務作業(Quartz.net)及關系型數據庫(MySQL)。

  (1)消息隊列(MQ):日志通過消息隊列實現消息統一接收,做一道緩沖,滿足日志數據並發接收能力。

  (2)日志接收服務端(LCServer):接收LCClient客戶端批量發送日志數據,並將其發送至消息隊列。

  (3)日志存儲(Elasticsearch):選用ES做日志存儲,主要考慮ES是一種文檔化分布式搜索服務,支持PB級的數據存儲,支持上百個節點的分布式集群能力,並且提供豐富的API使用,數據查詢方面有着優越的性能。

  (4)任務作業(Quartz.net):通過定制化開發作業任務實現對ES日志數據抽取、轉換、分析后,將結果存儲於關系型數據庫。Quartz.net中間件是業界公認的作業任務組件。

  (5)關系型數據庫(MySQL):實現日志結果數據存儲,供日志應用查詢使用。MySQL有着優越的主從復制機制,可解決單節點查詢性能瓶頸,同時提供傳統SQL腳本操作數據的能力,提供開發效率。

  日志數據存儲和分析后,最終目的就是提供與應用功能使用。

3、分析結果應用

  分析結果應用主要提供服務接口和管理功能兩種方式。

  (1)服務接口方式:基於http協議以restful方式提供接口,支持應用功能方便調用。

  (2)管理模塊方式:默認提供一套日志查詢管理功能,方便於應用直接集成使用。

 

四、總結

  日志采集本身也是一個分布式系統,服務端每個節點都支持分布式集群部署,可實現高並發、高可用性。本文只是一種拋磚引玉,系統每個組件還需要深化詳細,同時也包括實施部署。

 

 

作者:劉蔡濤
出處: http://www.cnblogs.com/Andon_liu 
關於作者:專注於微軟平台項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和項目管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工作。 如有問題或建議,請一起學習討論! 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。 
如有問題,可以郵件:568773262@qq.com 聯系我,謝謝。


微信號: 

 


免責聲明!

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



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