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 作的愈来愈好