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