HttpReports 是基於.Net Core 開發的APM監控系統,使用MIT開源協議,主要功能包括,統計, 分析, 可視化, 監控,追蹤等,適合在微服務環境中使用。git
Github地址:https://github.com/dotnetcore/HttpReportsgithub
在線預覽: http://122.51.188.23:8080 (帶寬有限,第一次會有點慢)web
在線文檔: https://www.yuque.com/httpreports/docssql
帳號: admin 密碼 123456數據庫
開源不易,感興趣的同窗還但願點個Star,支持下json
HttpReports 上一次發佈HttpReports 仍是在3個月前,HttpReports 2.0 版本的改動仍是挺大的,因此建議老版本的升級前,仍是先看下文檔,本次更新主要如下幾個方面api
首先,須要建立Dashboard 項目來接收,處理和展現數據,Dashboard 使用了 Vue + Antv +ElementUI 構建頁面並打包到程序集,只須要Web項目引用 Nuget包安裝便可,很是方便。微信
新建一個 .Net Core 的空Web項目,支持 2.1 及以上版本架構
新建完成後,經過Nuget包分別安裝 HttpReports.Dashboard ,HttpReports.MySQL(或者是HttpReports.SqlServer, HttpReports.PostgreSQL)app
引用完成後,簡單配置一下, 修改項目的 appsetting.json 文件
{ "HttpReportsDashboard": { "ExpireDay": 3, "Storage": { "ConnectionString": "DataBase=HttpReports;Data Source=localhost;User Id=root;Password=123456;", "DeferSecond": 10, "DeferThreshold": 100 }, "Mail": { "Server": "smtp.163.com", "Port": 465, "Account": "HttpReports@qq.com", "Password": "*******", "EnableSsL": true, "Switch": true } } }
參數介紹:
ExpireDay - 數據過時天數,默認3天,HttpReports 會自動清除過時的數據
Storage - 存儲信息
DeferSecond - 批量數據入庫的秒數,建議值 5-60
DeferThreshold - 批量數據入庫的數量,建議值100-1000
Mail - 郵箱信息,配置監控的話,能夠發告警郵件
修改完成後,咱們接着修改 Dahboard 項目的 Startup.cs 文件
public void ConfigureServices(IServiceCollection services) { services.AddHttpReportsDashboard().UseMySqlStorage(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseHttpReportsDashboard(); }
把Dashboard 程序啓動起來,若是沒有問題的話,會跳轉到Dashboard的登錄頁面 默認帳號:admin 密碼: 123456
如今可視化有了,可是沒有數據,咱們還須要 給服務端程序,添加 HttpReports 來收集信息。
我新建一個WebAPI 項目 UserService ,來充當用戶服務,而後安裝 HttpReports,固然你能夠在你的項目中直接使用
Nuget 引用 HttpReports , HttpReports.Transport.Http
修改 appsettings.json,簡單配置一下
{ "HttpReports": { "Transport": { "CollectorAddress": "http://localhost:5000/", "DeferSecond": 10, "DeferThreshold": 10 }, "Server": "http://localhost:7000", "Service": "User", "Switch": true, "RequestFilter": [ "/api/Helath/*", "/HttpReports*" ], "WithRequest": true, "WithResponse": true, "WithCookie": true, "WithHeader": true } }
參數介紹:
Transport -
CollectorAddress - 數據發送的地址,配置Dashboard 的項目地址便可
DeferSecond - 批量數據入庫的秒數,建議值 5-60
DeferThreshold - 批量數據入庫的數量,建議值100-1000
Server - 服務的地址,
Service - 服務的名稱
Switch - 是否開啓收集數據
RequestFilter - 數據過濾,用 * 來模糊匹配
WithRequest - 是否記錄接口的入參
WithResponse - 是否記錄接口的出參
WithCookie - 是否記錄Cookie 信息
WithHeader - 是否記錄請求Header信息
修改完成後,咱們接着修改 UserService 項目的 Startup.cs 文件
public void ConfigureServices(IServiceCollection services) { services.AddHttpReports().UseHttpTransport(); services.AddControllers(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseHttpReports(); ....
修改 UserService 項目的啓動端口爲7000, 而後 VS 設置多項目啓動, 同時運行 UserService 和Dashboard
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>().UseUrls("http://localhost:7000"); });
刷新下 UserService 的接口,再回到Dashboard的頁面上面,已經能夠看到數據了,一個簡單的服務接入HttpReports,已經完成了,是否是很簡單!
HttpReports 須要顯式指定Web程序的IP和端口,固然這個地址用外網和內網的均可以,在微服務環境中, 一個服務會開啓多個實例, HttpReports 經過IP和端口來區分不一樣的程序實例。
咱們直接在 appsetting.json 中設置 Urls 屬性,你能夠設置 "Server": "http://127.0.0.1:3000"
在命令行參數中配置
dotnet UserService.dll --urls="http://127.0.0.1:3000"
或者
dotnet UserService.dll --HttpReports:Server="http://127.0.0.1:5000"
貢獻的最簡單的方法之一就是是參與討論和討論問題(issue)。你也能夠經過提交的 Pull Request 代碼變動做出貢獻。
能夠添加QQ羣溝通,也能夠添加的微信,我拉你進微信羣
HttpReports 從第一次提交代碼到如今已經10個月了,兼職開源,佔據了生活很大一部分的時間, 一個個版本迭代到如今,2.0 不是最終版,將來可能會有 3.0 5.0,我看支持的同窗也有不少,有不少人提了不少意見,感謝各位的支持,讓咱們以爲作這件事是有意義的,必定會把 HttpReports 作的愈來愈好