Net分佈式系統之七:日誌採集系統(1)(轉)

http://www.cnblogs.com/Andon_liu/p/7508107.htmlhtml

日誌對大型應用系統或者平臺尤爲重要,系統日誌採集、分析是系統運維、維護及用戶分析的基礎。redis

1、系統日誌分類數據庫

  通常系統日誌可分爲三大類:設計模式

  一、用戶行爲日誌:經過採集系統用戶使用系統過程當中,一系列的操做日誌。安全

  二、業務變動日誌:特定業務場景須要,採集某用戶在某時使用某功能,對某業務(對象、數據)進行某操做,由A變成B。服務器

  三、系統運行日誌:系統運行服務器資源、網絡及基礎中間件的狀況進行定時採集日誌分析。微信

 

2、常見日誌分析應用場景restful

  日誌採集分析是由需求驅動,根據某種場景的須要日誌採集,採集的日誌進行鍼對性的分析。通常常見的日誌分析結果應用場景有:網絡

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

  二、內容推薦:根據用戶日常閱讀內容,採集相關日誌,並經過分析後,將用戶感興趣的內容系統自動推薦給用戶,從而提高用戶站粘性。

  三、系統審計:對於應用系統,採集操做日誌、業務變動日誌,有利於備查及提供相關安全審計功能。

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

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

 

3、日誌採集系統整體設計

  基於以上日誌採集的初步分析,尤爲微服務架構中,微服務治理能力、服務負載須要依賴服務日誌的採集分析,因此日誌採集子系統是微服務架構的基礎支持功能。日誌採集系統整體設計以下:

圖1- 日誌採集系統整體框架示意圖

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

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

一、日誌採集

  日誌採集實現三種方式進行採集日誌:

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

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

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

  日誌採集經過提供三種方式,知足不一樣的業務應用場景使用採集日誌。

二、日誌存儲&分析

  日誌存儲及分析由五部分構成:消息隊列(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腳本操做數據的能力,提供開發效率。

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

三、分析結果應用

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

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

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

 

4、總結

  日誌採集自己也是一個分佈式系統,服務端每一個節點都支持分佈式集羣部署,可實現高併發、高可用性。本文只是一種拋磚引玉,系統每一個組件還須要深化詳細,同時也包括實施部署。

 

 

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