簡單介紹
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 方法 ,
<code> public void ConfigureServices(IServiceCollection services)
{
// 添加HttpReports中間件
services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}/<code>
** 多個獨立的WebAPI應用 **
假設有一個 授權(Auth)API應用,和一個支付(Pay)API應用,並且沒有使用網關,需要分別在兩個項目的Startup.cs文件的 ConfigureServices 方法中分別添加以下代碼:
<code>services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer,"Auth");/<code>
支付Pay應用(Pay)
<code>services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer,"Pay"); /<code>
單個MVC應用
<code> public void ConfigureServices(IServiceCollection services)
{
// 添加HttpReports中間件
services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}/<code>
多個MVC應用
假設有一個 電商(Mall)應用,和一個支付(Pay)應用,需要分別在兩個項目的Startup.cs文件的 ConfigureServices 方法中分別添加以下代碼:
電商MVC應用 (Mall)
<code>services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer,"Mall");/<code>
支付MVC應用 (Pay)
<code>services.AddHttpReportsMiddleware(WebType.MVC, DBType.SqlServer,"Pay"); /<code>
切換數據庫
使用MySql數據庫
<code> services.AddHttpReportsMiddleware(WebType.API, DBType.MySql);/<code>
使用SqlServer數據庫
<code> services.AddHttpReportsMiddleware(WebType.API, DBType.SqlServer);/<code>
2.使用 HttpReports 中間件
修改 StartUp.cs 的 Configure 方法
.Net Core 2.2
<code> public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//使用HttpReports
app.UseHttpReportsMiddleware();
app.UseMvc();
}/<code>
必須要放在 UseMVC() 方法和其他中間件的前邊,否則不生效。
.Net Core 3.0 和以上版本
<code> public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//使用HttpReports
app.UseHttpReportsMiddleware();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}/<code>
必須要放在 UseEndpoints() 方法和其他中間件的前邊,否則不生效。
3. appsettings.json 配置連接字符串
打開 appsetting.json, 添加數據庫連接字符串, 這個地方第一次程序會自動創建數據庫和表, 當然也可以手動創建數據庫
<code>"ConnectionStrings": {
"HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
}/<code>
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.zipCore 3.0 發佈版本:https://files.cnblogs.com/files/myshowtime/HttpReports3.0.zip
這裡以 .Net Core2.2 版本為例, 下載發佈版本後,解壓文件, 找到 appsettings.json文件,並修改
<code>{
"ConnectionStrings": {
"HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
},
"HttpReportsConfig": {
"DBType": "SqlServer", // MySql Or SqlServer
"UserName": "admin",
"Password": "123456"
}
}/<code>
修改數據庫類型和連接字符串, 然後打開命令行,啟動程序,或者部署到站點也可以
<code>dotnet HttpReports.Web.dll/<code>
跳到登錄頁,輸入默認賬號 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內的方法:
<code> 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();
} /<code>
PostMan分別對添加中間件和不添加中間件的 API請求 1000次,每300ms請求一次
總結
HttpReports 後臺使用簡單三層,前端使用BootStrap,如果你想給你的程序,快速的添加一套分析,圖表,監控系統 ,那麼使用HttpReports 是一個不錯的選擇,如果能幫助到您的話,不要吝嗇您的贊哦
來源:https://www.cnblogs.com/myshowtime/p/12165843.html
閱讀更多 妖精的雜七雜八 的文章