.Net微服務架構之運行日誌分析系統

来源:https://www.cnblogs.com/Andon_liu/archive/2018/09/10/9617219.html
-Advertisement-
Play Games

一、引言 .Net技術棧目前還沒有像spring cloud相對完整一整微服務架構棧,隨著業務發展系統架構演進,自行構建.Net技術體系的微服務架構,配套相關核心組件。因平臺基於微服務架構方式研發,每個領域服務遵循平臺統一標準,各自研發,獨立部署運行,服務運行日誌均通過記錄本地文件方式進行記錄。程式 ...


一、引言

  .Net技術棧目前還沒有像spring cloud相對完整一整微服務架構棧,隨著業務發展系統架構演進,自行構建.Net技術體系的微服務架構,配套相關核心組件。因平臺基於微服務架構方式研發,每個領域服務遵循平臺統一標準,各自研發,獨立部署運行,服務運行日誌均通過記錄本地文件方式進行記錄。程式日誌無法及時查閱,需登錄伺服器查看,同時不利於日誌統一管理,因研發運行日誌分析系統,進行日誌統一分析管理,便於快速定位程式運行問題及時處理,保障平臺運行穩定。雖然行業上也有一些日誌架構,如較為有名的LEK(logstash, elasticsearch, kibana),因考慮到後續一些個性化的需求,還是自行研發運行日誌分析系統。

 

二、設計原則

  系統在總體微服務架構設計思想下,遵守平臺標準,並結合實際解決問題的需要,進行設計和研發,系統嚴格按照如下設計原則設計:

  1、模塊化:根據職責和歸屬明確,進行拆分模塊,模塊功能高度內聚。

  2、服務化:各模塊通信,通過服務方式進行調用,服務之間通信,遵守平臺的標準。

  3、松耦合:系統模塊之間通信,基於行業通用標準,按照“約定優於配置”思想,充分體現系統模塊之間松耦合的關係。

  4、高性能:採用非同步的方式進行記錄日誌和分析,不影響平臺總體性能。

  5、易擴展:日誌採用統一的接入方式,支持靈活擴展。

  6、跨平臺:支持不同技術語言、平臺進行採集日誌。

 

三、總體架構

圖- 運行日誌分析系統總體架構示意圖


  如圖所示,系統基於上述設計原則,主要由五部分組成:日誌記錄、日誌採集、日誌接入、日誌分析及存儲、日誌管理服務。每部分職責定位明確,相互支持、相互協作,共同構成運行日誌分析系統。日誌記錄到本地文件,通過日誌採集器將本地日誌文件抽取後,發送至Kafka,同時由日誌分析服務進行消費、分析及存儲於elasticsearch,日誌管理服務提供於用戶查閱&分析日誌信息。在平臺統一通信協議下,擴展運行日誌的內容,沿用Json報文格式,記錄內容包括:IP、埠、服務ID、記錄時間、日誌內容。

 

1、日誌報文

  

2、日誌記錄

  日子記錄,支持多種日誌記錄組件:Log4.net(本系統選用)、.Net core 自帶的Nlog、微軟企業庫等,針對JAVA技術語言開發的服務,則選用log4j組件,只要按照約定規範進行列印日誌即可。將日誌信息記錄到本地文件。

3、日誌採集

  日誌採集,選用filebeat組件,filebeat是一個輕量級的日誌傳輸組件,其可以通過提供一種輕量級的方式來轉發和集中日誌和文件,幫助你把簡單採集和發送的事情簡單化。本質上filebeat是一個日誌信息搬運工,不進行日誌過濾和分析工作。同時支持跨平臺。

4、日誌接入

  日誌接入,考慮日誌量在某一故障情況,可能存在較大併發接入,所以選用Kafka組件作為日誌信息接入分析的統一入口,kafka組件是一個高性能的MQ組件,具有高併發、高可用的特性。統一接入方案,為系統提供更為靈活的採集日誌,不受限於某一平臺、技術或者日誌採集組件,均可將運行日誌進行接入分析和存儲。

5、日誌分析及儲存

  日誌分析,採用.Net Core研發,以後臺服務的方式進行運行,訂閱kafka的日誌消息進行批量消費,分析程式支持橫向擴展部署於多個程式,提升日誌的消費能力,保障日誌接收能力和分析能力相當。對日誌分析後存儲於Elasticsearch(以下簡稱:ES),ES是一個高可擴展的開源全文搜索和分析引擎,它允許存儲、搜索和分析大量的數據。非常適合存儲半結構化的日誌數據,便於全文搜索日誌信息。

6、日誌管理服務

   日誌管理服務,實現查詢ES中的運行日誌數據,通過WebAPI方式提供界面功能調用。本系統採用“前後分離”應用開發技術,前端界面功能採用H5+JS,後端服務以restful方式提供API介面。


四、總結

   根據不同應用場景和需求,選用不同的日誌分析架構或者自行研發,最終目的就是為了快速、方便捕捉系統日誌,有助於分析系統運行情況。尤其對於微服務架構大型平臺,運行日誌更為重要。本文主要是將系統設計原則、思想進行記錄,同時對有需要的同學提供參考,可能再實際應用中,還有很多地方需要完善或者優化。

 

 微信公眾號: 


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

-Advertisement-
Play Games
更多相關文章
  • 序言: 剛結束公司的三個月試用期,意味著我即將正式步入社會成為廣大從事IT行業的一員。作為一個編程小白,無論從技術層面還是知識層面都是比較薄弱的,想要成為一個優秀的程式員不斷的學習與探索是不可避免的。我相信一切的付出與收穫是成正比的!Fighting! 這幾天在做公司的實際項目的時候,需要實現選中B ...
  • 前端火熱的框架層出不窮,作為碼農的我們,依舊需要去學習,去探索新的問題,學習新技術,其實就是為了寫一手好的,自認為是高質量的代碼。今天主要分享一下前端最火的框架vue,也是我比較喜歡的框架。 vue上手可以說是比較輕鬆而且簡單,如果你用過angular,react,你也會很喜歡vue。vue的核心思 ...
  • css實現單行文本溢出顯示 ... 直接上效果:相對於多行文本溢出做處理, 單行要簡單多,且更容易理解。 實現多行文本溢出顯示... 方法: 因使用了WebKit的CSS擴展屬性,該方法適用於WebKit瀏覽器及移動端; -webkit-line-clamp用來限制在一個塊元素顯示的文本的行數。 為 ...
  • 使用Canvas路徑畫圖需要註意方向,畫圖方向是順時針還是逆時針需要記住。下麵讓我們看看Canvas常見路徑方向。 arc 參數值 參數 | 描述 | x | 圓的中心的 x 坐標。 y | 圓的中心的 y 坐標。 r | 圓的半徑。 sAngle | 起始角,以弧度計。(弧的圓形的三點鐘位置是 0 ...
  • 引用: JavaScript Cookie - by runoob.com Cookie是儲存在電腦文本文件中的數據,用於保存訪問者的信息,並可以在下次打開頁面時引用。 頁面在設置/引用訪問者信息時,需要在JavaScript中對Cookie進行設置,獲取和檢索三個函數。 例如當訪問者首次訪問網頁時 ...
  • nodejs 簡單的封裝一些mysql模塊 實現一個方法根據不同傳參進行增刪改查 首先要 npm install mysql 代碼如下 傳入參數如下 objHost 資料庫的基本信息如下 sql 就是sql語句 添加 修改 刪除 查找 callback回調 操作完成後拿到數據的回調 add 在添加時 ...
  • JavaScript有兩種數據類型,基礎數據類型和引用數據類型。基礎數據類型都是按值訪問的,我們可以直接操作保存在變數中的實際的值。而引用類型如Array,我們不能直接操作對象的堆記憶體空間。引用類型的值都是按引用訪問的,即保存在變數對象中的一個地址,該地址與堆記憶體的實際值相關聯。 一、深拷貝和淺拷貝 ...
  • 閱讀目錄 為什麼需要事務 事務的來源 分散式系統中的事務問題 分散式事務的解決方案 結語 暫時還未涉及的園友們,可以收藏防身哦~ 為什麼需要事務 事務的來源 分散式系統中的事務問題 分散式事務的解決方案 結語 暫時還未涉及的園友們,可以收藏防身哦~ 為什麼需要事務 事務的來源 分散式系統中的事務問題 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...