微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用
簡單介紹
HttpReports 是 .Net Core 下的一個Web項目, 適用于WebAPI,Ocelot網(wǎng)關(guān)應(yīng)用,MVC項目,非常適合針對微服務(wù)應(yīng)用使用,通過中間件的形式集成到您的項目中,可以讓開發(fā)人員快速的搭建出一個 數(shù)據(jù)統(tǒng)計,分析,圖表,監(jiān)控 一體化的 Web站點。
主要模塊
主要包含HttpReports 中間件 和 HttpReports.Web 的MVC項目;
HttpReports:https://github.com/SpringLeee/HttpReports
HttpReports.Web:https://github.com/SpringLeee/HttpReportsWeb
在線預(yù)覽:http://175.102.11.117:8801 賬號 admin 密碼 123456
支持項目類型
???? 單個WebAPI應(yīng)用
???? 多個獨立WebAPI應(yīng)用
???? Ocelot 網(wǎng)關(guān)應(yīng)用
???? 單個MVC項目
???? 多個MVC項目
如何使用
1.添加 HttpReports 中間件
Nuget 包安裝 HttpReports, 打開Startup.cs, 修改 ConfigureServices(IServiceCollection services) 方法,添加以下代碼,放在 services.AddMvc() 之前都可以。
選擇您的應(yīng)用類型:
?????單個WebAPI應(yīng)用 或者 使用Ocelot網(wǎng)關(guān)的應(yīng)用
修改 ConfigureServices 方法 ,
public void ConfigureServices(IServiceCollection services){// 添加HttpReports中間件services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer);services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);}???? ** 多個獨立的WebAPI應(yīng)用 **
假設(shè)有一個 授權(quán)(Auth)API應(yīng)用,和一個支付(Pay)API應(yīng)用,并且沒有使用網(wǎng)關(guān),需要分別在兩個項目的Startup.cs文件的 ConfigureServices 方法中分別添加以下代碼:
授權(quán)API應(yīng)用(Auth)
services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer,"Auth");支付Pay應(yīng)用(Pay)
services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer,"Pay");?????單個MVC應(yīng)用
public void ConfigureServices(IServiceCollection services){// 添加HttpReports中間件services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer);services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);}?????多個MVC應(yīng)用
假設(shè)有一個 電商(Mall)應(yīng)用,和一個支付(Pay)應(yīng)用,需要分別在兩個項目的Startup.cs文件的 ConfigureServices 方法中分別添加以下代碼:
電商MVC應(yīng)用 (Mall)
services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer,"Mall");支付MVC應(yīng)用 (Pay)
services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer,"Pay");?????切換數(shù)據(jù)庫
使用MySql數(shù)據(jù)庫
services.AddHttpReportsMiddlewire(WebType.API, DBType.MySql);使用SqlServer數(shù)據(jù)庫
services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer);2.使用 HttpReports 中間件
修改 StartUp.cs 的 Configure 方法
.Net Core 2.2
public void Configure(IApplicationBuilder app, IHostingEnvironment env){//使用HttpReportsapp.UseHttpReportsMiddlewire();app.UseMvc();}必須要放在 UseMVC() 方法和其他中間件的前邊,否則不生效。
.Net Core 3.0 和以上版本
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){//使用HttpReportsapp.UseHttpReportsMiddlewire();app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}必須要放在 UseEndpoints() 方法和其他中間件的前邊,否則不生效。
3. appsettings.json 配置連接字符串
打開 appsetting.json, 添加數(shù)據(jù)庫連接字符串,?需要手動創(chuàng)建數(shù)據(jù)庫 HttpReports
"ConnectionStrings": {"HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"}4. 運行Web應(yīng)用
到這一步,已經(jīng)配置完成了, 直接運行Web應(yīng)用,如果中間有報錯的話,可能是因為數(shù)據(jù)庫的連接問題,請檢查后再重試,如果沒有報錯的話,打開數(shù)據(jù)庫 [HttpReports].[dbo].[RequestInfo], 如果能看到有數(shù)據(jù)記錄,就說明 HttpReports 中間件的部分配置完成了,數(shù)據(jù)有了,下邊開始配置 HttpReportsWeb 站點。
HttpReports.Web部分
github源碼:https://github.com/SpringLeee/HttpReportsWeb
有需要的也可以下載源碼后編譯,默認(rèn)的git分支是Core 2.2 版本,還有一個 core 3.0的分支;
這里提供 core2.2 和 3.0 的發(fā)布版本下載:
Core 2.2 發(fā)布版本:https://files.cnblogs.com/files/myshowtime/HttpReports2.2.zip
Core 3.0 發(fā)布版本:https://files.cnblogs.com/files/myshowtime/HttpReports3.0.zip
這里以 .Net Core2.2 版本為例, 下載發(fā)布版本后,解壓文件, 找到 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 | 數(shù)據(jù)庫連接字符串,要和上邊配置的中間件的數(shù)據(jù)庫一致 |
| DBType | 數(shù)據(jù)庫類型 SqlServer MySql , 注意沒有空格 |
| UserName | Web站點后臺登錄名,可修改 |
| Password | Web站點后臺登錄密碼,可修改 |
修改數(shù)據(jù)庫類型和連接字符串, 然后打開命令行,啟動程序,或者部署到站點也可以
dotnet HttpReports.Web.dll跳到登錄頁,輸入默認(rèn)賬號 admin 密碼 123456,登錄到系統(tǒng),看一下主要的幾個頁面
主頁面
主要是Web應(yīng)用 請求次數(shù), 請求時間, 請求錯誤,錯誤率TOP, 響應(yīng)最快和響應(yīng)最慢等, 按天,月,年進(jìn)行趨勢分析, 服務(wù)節(jié)點 點擊可以選中和取消,并且可以切換亮色和暗色主題
預(yù)警監(jiān)控
HttpReports 監(jiān)控預(yù)警主要針對以下幾點:
???? 響應(yīng)超時
???? 請求錯誤
???? IP異常
???? 請求量監(jiān)控
如何添加監(jiān)控:
這里演示添加一個監(jiān)控,監(jiān)控頻率 選1小時,也就是1個小時 運行一次,然后填入預(yù)警的收件郵箱,可填寫多個郵箱, 服務(wù)節(jié)點 可以選中單個和多個節(jié)點,默認(rèn)的話,下邊 4個監(jiān)控都是關(guān)閉狀態(tài), 如果需要勾選啟動即可
響應(yīng)超時監(jiān)控配置
預(yù)防一段時間內(nèi)接口大量超時,設(shè)置超時時間為4000ms , 超時率為0.05% (最多支持兩位小數(shù),設(shè)置值要帶上%號)
請求錯誤監(jiān)控配置
預(yù)防一段時間內(nèi)接口大量錯誤,設(shè)置錯誤HTTP狀態(tài)碼為500,503, 超時率為20%
IP異常監(jiān)控配置
預(yù)防機(jī)器人請求,防止一段時間大量重復(fù)IP請求,設(shè)置IP重復(fù)率為15%
請求量監(jiān)控
預(yù)防短時間內(nèi)接口新增大量的請求,造成系統(tǒng)異常,設(shè)置 單位時間 請求量為100000,當(dāng)請求量達(dá)到這個值觸發(fā)預(yù)警
保存任務(wù),任務(wù)自動運行,監(jiān)控頻率可以逐漸修改,找到適合系統(tǒng)的預(yù)警值, 如果數(shù)據(jù)達(dá)到預(yù)警值時,您就會收到HttpReports 發(fā)送給您的預(yù)警通知郵件
項目環(huán)境基本要求
使用HttpReports中間件的.Net Core 版本 2.2, 3.0, 3.1;
HttpReports.Web 的core版本為 2.2 , 3.0
性能事項
HttpReports 中間件存儲數(shù)據(jù)是異步操作,所以對api接口請求的時間可以忽略, 存儲數(shù)據(jù)是也只是存儲基本信息,對請求內(nèi)容和響應(yīng)內(nèi)容不作記錄,后臺監(jiān)控任務(wù)采用Quartz.Net實現(xiàn)
下面是用PostMan做的一個簡單測試:
WebAPI內(nèi)的方法:
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請求一次
| 原生API | 1000 | 32.535 |
| 使用中間件 | 1000 | 32.899 |
總結(jié)
HttpReports 后臺使用簡單三層,前端使用BootStrap,如果你想給你的程序,快速的添加一套分析,圖表,監(jiān)控系統(tǒng) ,那么使用HttpReports 是一個不錯的選擇,如果能幫助到您的話,還請希望給個Star, 感謝 ????
https://github.com/SpringLeee/HttpReports
MIT
交流反饋
如果您在項目中使用了HttpReports,歡迎添加QQ群, 有想法 有建議,有bug 都?xì)g迎大家來溝通, 也可以添加我的微信,希望可以幫助到您
總結(jié)
以上是生活随笔為你收集整理的微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAP 3.0 版本正式发布
- 下一篇: HTTP Strict Transpor