簡單介紹
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
