主頁 > .NET開發 > 微服務統計,分析,圖表,監控一體化的HttpReports專案在.Net Core 中的使用

微服務統計,分析,圖表,監控一體化的HttpReports專案在.Net Core 中的使用

2020-09-18 11:05:27 .NET開發

簡單介紹

HttpReports 是 .Net Core 下的一個Web專案, 適用于WebAPI,Ocelot網關應用,MVC專案,非常適合針對微服務應用使用,通過中間件的形式集成到您的專案中,可以讓開發人員快速的搭建出一個 資料統計,分析,圖表,監控 一體化的 Web站點,



主要模塊

主要包含HttpReports 中間件 和 HttpReports.Web的MVC專案;

專案地址:

HttpReports: https://github.com/SpringLeee/HttpReports

HttpReports.Web: https://github.com/SpringLeee/HttpReports

在線預覽: http://175.102.11.117:8801 賬號 admin 密碼 123456

支持專案型別

?? 單個WebAPI應用
?? 多個獨立WebAPI應用
?? Ocelot 網關應用
?? 單個MVC專案
?? 多個MVC專案

如何使用

1.添加 HttpReports 中間件

Nuget 包安裝 HttpReports, 打開Startup.cs, 修改 ConfigureServices(IServiceCollection services) 方法,添加以下代碼,放在 services.AddMvc() 之前都可以,

選擇您的應用型別:

?? 單個WebAPI應用 或者 使用Ocelot網關的應用

修改 ConfigureServices 方法 ,

    public void ConfigureServices(IServiceCollection services)
    { 
   	 // 添加HttpReports中間件
   	 services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer);

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 
   }

?? ** 多個獨立的WebAPI應用 **

假設有一個 授權(Auth)API應用,和一個支付(Pay)API應用,并且沒有使用網關,需要分別在兩個專案的Startup.cs檔案的 ConfigureServices 方法中分別添加以下代碼:

授權API應用(Auth)
services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer,"Auth");
支付Pay應用(Pay)
services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer,"Pay");  

?? 單個MVC應用

	public void ConfigureServices(IServiceCollection services)
	{ 
		// 添加HttpReports中間件
		services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer);

		services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 
	}

?? 多個MVC應用

假設有一個 電商(Mall)應用,和一個支付(Pay)應用,需要分別在兩個專案的Startup.cs檔案的 ConfigureServices 方法中分別添加以下代碼:

電商MVC應用 (Mall)
services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer,"Mall");
支付MVC應用 (Pay)
services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer,"Pay");  

?? 切換資料庫

使用MySql資料庫

 services.AddHttpReportsMiddleware(WebType.API, DBType.MySql);

使用SqlServer資料庫

 services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer);
2.使用 HttpReports 中間件

修改 StartUp.cs 的 Configure 方法

.Net Core 2.2

	public void Configure(IApplicationBuilder app, IHostingEnvironment env)
	{    
		//使用HttpReports 
		app.UseHttpReportsMiddleware();  

		app.UseMvc();
	}

必須要放在 UseMVC() 方法和其他中間件的前邊,否則不生效,

.Net Core 3.0 和以上版本

	public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
	{ 
		//使用HttpReports
		app.UseHttpReportsMiddleware();

		app.UseRouting(); 

		app.UseAuthorization(); 

		app.UseEndpoints(endpoints =>
		{
			endpoints.MapControllers();
		});
	}

必須要放在 UseEndpoints() 方法和其他中間件的前邊,否則不生效,

3. appsettings.json 配置連接字串

打開 appsetting.json, 添加資料庫連接字串, 這個地方第一次程式會自動創建資料庫和表, 當然也可以手動創建資料庫

"ConnectionStrings": {
    "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
  }
4. 運行Web應用

到這一步,已經配置完成了, 直接運行Web應用,如果中間有報錯的話,可能是因為資料庫的連接問題,請檢查后再重試,如果沒有報錯的話,打開資料庫 [HttpReports].[dbo].[RequestInfo], 如果能看到有資料記錄,就說明 HttpReports 中間件的部分配置完成了,資料有了,下邊開始配置 HttpReportsWeb 站點,


HttpReports.Web 部分

github原始碼:https://github.com/SpringLeee/HttpReportsWeb

這里提供 core2.2 和 3.0 的發布版本下載:

Core 2.2 發布版本: https://files.cnblogs.com/files/myshowtime/HttpReports2.2.zip
Core 3.0 發布版本:https://files.cnblogs.com/files/myshowtime/HttpReports3.0.zip

這里以 .Net Core2.2 版本為例, 下載發布版本后,解壓檔案, 找到 appsettings.json檔案,并修改

{
  "ConnectionStrings": {
    "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"   
  },
  "HttpReportsConfig": {
    "DBType": "SqlServer", // MySql Or SqlServer
    "UserName": "admin",
    "Password": "123456"
  }
}
欄位 說明
HttpReports 資料庫連接字串,要和上邊配置的中間件的資料庫一致
DBType 資料庫型別 SqlServer MySql , 注意沒有空格
UserName Web站點后臺登錄名,可修改
Password Web站點后臺登錄密碼,可修改

修改資料庫型別和連接字串, 然后打開命令列,啟動程式,或者部署到站點也可以

dotnet HttpReports.Web.dll

跳到登錄頁,輸入默認賬號 admin 密碼 123456,登錄到系統,看一下主要的幾個頁面

主頁面

主要是Web應用 請求次數, 請求時間, 請求錯誤,錯誤率TOP, 回應最快和回應最慢等, 按天,月,年進行趨勢分析, 服務節點 點擊可以選中和取消,并且可以切換亮色和暗色主題

預警監控

HttpReports 監控預警主要針對以下幾點:

?? 回應超時
?? 請求錯誤
?? IP例外
?? 請求量監控

如何添加監控:

這里演示添加一個監控,監控頻率 選1小時,也就是1個小時 運行一次,然后填入預警的收件郵箱,可填寫多個郵箱, 服務節點 可以選中單個和多個節點,默認的話,下邊 4個監控都是關閉狀態, 如果需要勾選啟動即可

回應超時監控配置

預防一段時間內介面大量超時,設定超時時間為4000ms , 超時率為0.05% (最多支持兩位小數,設定值要帶上%號)

請求錯誤監控配置

預防一段時間內介面大量錯誤,設定錯誤HTTP狀態碼為500,503, 超時率為20%

IP例外監控配置

預防機器人請求,防止一段時間大量重復IP請求,設定IP重復率為15%

請求量監控

預防短時間內介面新增大量的請求,造成系統例外,設定 單位時間 請求量為100000,當請求量達到這個值觸發預警

保存任務,任務自動運行,監控頻率可以逐漸修改,找到適合系統的預警值, 如果資料達到預警值時,您就會收到HttpReports 發送給您的預警通知郵件

專案環境基本要求

使用HttpReports中間件的.Net Core 版本 2.0 及以上版本

HttpReports.Web 的core版本為 2.2 , 3.0

性能事項

HttpReports 中間件存盤資料是異步操作,所以對api介面請求的時間可以忽略, 存盤資料是也只是存盤基本資訊,對請求內容和回應內容不作記錄,后臺監控任務采用Quartz.Net實作

下面是用PostMan做的一個簡單測驗:

WebAPI內的方法:

        public string Sql1()
        {
            SqlConnection con = new SqlConnection(
                "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HyBasicData;");

            var list1 =  con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list2 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list3 = con.Query(" select * from [HyBasicData].[dbo].[Customers] "); 

            return list1.Count().ToString();
        } 

PostMan分別對添加中間件和不添加中間件的 API請求 1000次,每300ms請求一次

說明 請求次數 平均回應時間 ms
原生API 1000 32.535
使用中間件 1000 32.899

總結

HttpReports 后臺使用簡單三層,前端使用BootStrap,如果你想給你的程式,快速的添加一套分析,圖表,監控系統 ,那么使用HttpReports 是一個不錯的選擇,如果能幫助到您的話,還請希望給個Star, 感謝 ??

https://github.com/SpringLeee/HttpReports

MIT

維護和更新

ToDoList

交流反饋

如果您在專案中使用了HttpReports,或者感興趣的可以加入QQ群,大家一起溝通,有更新也會第一時間通知,也可以添加我的微信,希望可以幫助到您

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/73232.html

標籤:.NET Core

上一篇:HttpWebRequest 時不時出現(401) 未經授權問題

下一篇:rdlc報表:怎么把一列的資料在一行多行內并列顯示

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more