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

来源:http://www.cnblogs.com/Andon_liu/archive/2017/09/12/7508107.html
-Advertisement-
Play Games

日誌對大型應用系統或者平臺尤其重要,系統日誌採集、分析是系統運維、維護及用戶分析的基礎。 一、系統日誌分類 一般系統日誌可分為三大類: 1、用戶行為日誌:通過採集系統用戶使用系統過程中,一系列的操作日誌。 2、業務變更日誌:特定業務場景需要,採集某用戶在某時使用某功能,對某業務(對象、數據)進行某操 ...


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

一、系統日誌分類

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

  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方面的項目開發、架構、管理工作。 如有問題或建議,請一起學習討論! 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。 
如有問題,可以郵件:[email protected] 聯繫我,謝謝。


微信號: 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 描述寫一個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下讀題不認真仔細的童鞋,規定,兩個素數相鄰為1的也成為孿生素數。輸入第一行給出N(0 using namespace st... ...
  • 選擇排序是一種非常簡單的排序演算法,從字面意思我們就可以知道,選擇就是從未排序好的序列中選擇出最小(最大)的元素,然後與第 i 趟排序的第 i-1(數組中下標從 0 開始) 個位置的元素進行交換,第 i 個元素之前的序列就是已經排序好的序列。整個排序過程只需要遍歷 n-1 趟便可排好,最後一個元素自動 ...
  • PHP操作實現一個多功能購物網站 一、需要實現的頁面: Index.aspx:瀏覽商品頁面,顯示商品列表,用戶可以點擊“加入購物車“。 ViewCart.aspx:查看購物車頁面,顯示已購買的商品信息,可以點擊“刪除“和“提交添加訂單購買”商品 ViewAccount.aspx:查看個人賬戶餘額 L ...
  • 回到目錄 下麵將介紹以下幾個原則,都是軟體設計里的大哥大,大姐大級別的人物! DRY DRY是Do Not Repeat Yourself的簡稱,不要寫重覆的代碼,可以使用代碼重構里的提取到方法,提取到類來做這事 KISS KISS 是Keep it short and simple 的簡稱。意思是 ...
  • 一、引言 我們常常在會在字元串中搜索匹配字元或判斷一個字元串是否符合我們要的格式時,使用正則表達式,可解決問題的背後是一種什麼思想呢?即我們今天要學習的內容,解釋器模式 二、解釋器模式 定義:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子 1.文法:即 ...
  • 一個很簡單的淘寶優惠券搜索助手 大家看看有沒有用吧 下載地址:http://pan.baidu.com/s/1skRHTDF ...
  • 返回碼規範: 統一六位 000000 表示成功! 參數相關返回碼預留100000-199999;系統相關返回碼預留200000-299999;數據中心310000-319999後續項目以此類推,後續根據業務擴展情況新增操作碼需要提前備案! module = 系統碼 optCode = 操作碼 opt ...
  • Spring Cloud Netflix多語言/非java語言支持之Spring Cloud Netflix Sidecar Polyglot support with Sidecar 前言 公司有一個調研要做,調研如何將Python語言提供的服務納入到Spring Cloud管理中來,找到了這個S ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...