簡單說明下,APM全稱Application Performance Management應用性能管理,經過各類收集請求數據,同時搭配Dashboard以實現對應用程序性能管理和故障管理的系統化解決方案。css
HttpReports 是針對.Net Core 開發的輕量級APM系統,基於MIT開源協議, 使用HttpReports能夠快速搭建.Net Core環境下統計,分析,圖表,監控一體化的站點,而且支持多種數據庫存儲,適應.Net Core WebAPI,MVC,Web項目, 經過引用Nuget構建Dashboard面板,很是適合中小項目使用。git
Github地址:https://github.com/SpringLeee/HttpReports 感興趣的同窗歡迎 Github Star 一波...github
在線預覽: https://moa.hengyinfs.comweb
帳號: admin 密碼 123456數據庫
數據庫 | Nuget包名稱 |
---|---|
SqlServer | HttpReports.SqlServer |
MySql | HttpReports.MySQL |
Oracle | HttpReports.Oracle |
PostgreSQL | HttpReports.PostgreSQL |
ElasticSearch | HttpReports.ElasticSearch |
HttpReports 須要手動建立數據庫, 我這裏使用 SqlServer 數據庫爲例,建立數據庫 HttpReports, 固然數據庫名稱能夠自由定義.json
打開VS開發工具,新建一個 WebAPI 應用,這裏 .Net Core 版本只要是2.0 以上便可,我這裏用的是3.1版本,建立完成後,Nuget 包引用 HttpReportsapi
引用成功後,由於我使用的是SqlServer 數據庫,咱們再Nuget引用 HttpReports.SqlServer包緩存
找到程序的 appsetting.json,修改成如下配置, 注意:這裏Storage 配置的數據庫名稱要和新建的數據庫名稱一致,微信
{ "HttpReports": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;" }, "Node": "TestWebAPI" } }
而後咱們再修改 StartUp.cs 文件,修改成如下代碼app
public void ConfigureServices(IServiceCollection services) { //添加HttpReports services.AddHttpReports().UseSQLServerStorage(); services.AddControllers(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { //使用HttpReports app.UseHttpReports(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
一切準備就緒後,咱們啓動 WebAPi,而且刷新幾回頁面,到這裏爲止,WebAPI的部分咱們已經完成了 😛
新建一個 .Net Core MVC 應用,新建完成後,經過Nuget包咱們分別安裝 HttpReports.Dashboard ,HttpReports.SqlServer
引用完成後,修改MVC 項目的 appsetting.json 文件, 注意數據庫要一致
{ "HttpReports": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;" } } }
修改完成後,咱們接着修改 MVC 項目的 Startup.cs 文件
public void ConfigureServices(IServiceCollection services) { // 添加Daashboard services.AddHttpReportsDashborad().UseSQLServerStorage(); services.AddControllersWithViews(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 使用Dashboard app.UseHttpReportsDashboard(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
一切準備就緒後,咱們啓動MVC 項目,若是沒有問題的話,會跳轉到Dashboard的登錄頁面,默認帳號:admin 密碼: 123456
例子中我用的是SqlServer 數據庫,其餘的數據庫也是相似的,我只建立了一個WebAPI,固然HttpRrports 也支持多個WebAPI,咱們只要修改appsetting.json 的 Node,你能夠設置一個 Node 爲 Auth,一個 Node 爲 Log 等等等,到這裏一個最簡單集成 HttpReports 的例子已經完成了, 請盡情使用吧 😆
ElasticSearch 會和其餘數據庫有些不一樣,若是採用的是ES存儲的話,修改程序 appsetting.json,採用下邊的配置便可
{ "HttpReports": { "Storage": { "ConnectionString": "http://localhost:9200/", "UserName": "admin", "Password": "admin" } } }
HttpReports 默認是同步入庫,有的用戶考慮到性能可能要用到 異步批量入庫,只須要修改 WebAPI 項目
{ "HttpReports": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;", "EnableDefer": true, //是否啓用延時寫入 "DeferTime": "00:00:30", //延時寫入的時間,超過此時間將進行寫入 "DeferThreshold": 5 //延時寫入的閾值,緩存超過此數目時進行寫入 }, "Node": "Pay" } }
HttpReports 再捕獲Http請求時,會過濾掉資源文件,若是你不想這樣作,添加或者修改appsetting.json, 設置
FilterStaticFiles = false
便可
HttpReports.Dashboard 默認使用 MVC 項目的根目錄,好比: www.xxx.com, 若是你不想這樣作,添加或者修改appsetting.json,設置 UseHome = false
, 這樣訪問 dashobard 的地址爲 www.xxx.com/Dashboard
HttpReports.Dashboard 集成了預警監控功能,使用的話須要先配置 Smtp 郵箱,不然接收不到預警郵件哦
咱們修改Dashboard項目的appsetting.json爲下面便可
{ "HttpReports": { "Storage": { "ConnectionString": "DataBase=HttpReports;Data Source=localhost;User Id=root;Password=123456" }, "Mail": { "Server": "smtp.qq.com", "Port": 465, //smtp端口 "Account": "", "Password": "", "EnableSsL": true //是否使用ssl } } }
監控功能主要針對如下四項監控
簡單說明下,監控頻率 選1小時,也就是1個小時 運行一次,而後填入預警的收件郵箱,多個郵箱用逗號隔開, aaa.qq.com,bbb.qq.com , 服務節點 能夠選中單個和多個節點,默認的話,下邊 4個監控都是關閉狀態, 若是須要勾選啓動便可,具體的話這裏就很少說了.
{ "HttpReports": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;", "EnableDefer": false, //是否啓用延時寫入 "DeferTime": "00:00:30", //延時寫入的時間,超過此時間將進行寫入 "DeferThreshold": 5 //延時寫入的閾值,緩存超過此數目時進行寫入 }, "Node": "Pay", // WebAPI 的服務名稱 "FilterStaticFiles": true // 是否過濾掉css,js 等資源文件 } }
{ "HttpReports": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;", }, "UseHome": true, // 默認使用根目錄導航 "Mail": { "Server": "smtp.qq.com", "Port": 465, //smtp端口 "Account": "", "Password": "", "EnableSsL": true //是否使用ssl } } }
HttpReports 是 .Net Core環境下開源的APM系統,很是適合微服務環境中使用,若是是中小型項目的話,那麼使用 HttpReports 是一個不錯的選擇,若是能幫助到您的話,還請但願給個Star 支持下, 感謝 😆
Github: https://github.com/SpringLeee/HttpReports
若是您在項目中使用了HttpReports,或者感興趣的能夠加入QQ羣,你們一塊兒溝通,有更新也會第一時間通知,也能夠添加個人微信,但願能夠幫助到您