前言介绍
HttpReports 是针对. Net Core 开发的轻量级 APM 系统, 基于 MIT 开源协议, 使用 HttpReports 可以快速搭建. Net Core 环境下统计, 分析, 图表, 监控, 分布式追踪一体化的站点, 适应. Net Core webAPI,MVC,Web 项目, 通过引用 Nuget 构建 Dashboard 面板, 上手简单, 适合在微服务架构中使用.
GitHub 地址: https://github.com/SpringLeee/HttpReports
在线预览: https://moa.hengyinfs.com
账号: admin 密码 123456
开源不易, 感兴趣的同学欢迎 GitHub Star 一波...
主要功能
接口调用指标分析
多服务节点数据聚合分析
慢请求, 错误请求分析
接口调用日志查询
趋势数据分析 (维度: 分钟, 小时, 天)
多类型预警监控
HTTP 调用分析
Grpc 调用分析
分布式追踪
多数据库支持, 集成方便
数据库支持
数据库 | Nuget 包名称 |
---|---|
SqlServer | HttpReports.SqlServer |
MySql | HttpReports.MySQL |
Oracle | HttpReports.Oracle |
PostgreSQL | HttpReports.PostgreSQL |
HttpReports Dashboard-UI
快速开始
Step1: 初始化数据库
HttpReports 需要手动创建数据库, 我这里使用 SqlServer 数据库为例, 创建数据库 HttpReports, 当然数据库名称可以自由定义, 后边程序要和这个数据库名字对应.
Step2: 集成到 WebAPI 应用
打开 VS 开发工具, 新建一个 WebAPI 应用, 这里 .Net Core 版本只要是 2.0 以上即可, 我这里用的是 3.1 版本, 创建完成后, Nuget 包引用 HttpReports
引用成功后, 因为我使用的是 SqlServer 数据库, 我们再 Nuget 引用 HttpReports.SqlServer 包
找到程序的 appsetting.JSON, 修改为以下配置, 注意: 这里 Storage 配置的数据库名称要和新建的数据库名称一致
- {
- "HttpReports": {
- "Storage": {
- "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
- },
- "Node": "UserService"
- }
- }
配置完成后, 然后我们再修改 StartUp.cs 文件, 修改为以下代码
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddHttpReports().UseSQLServerStorage();
- services.AddControllers();
- }
- public void Configure(IApplicationBuilder App, IWebHostEnvironment env)
- {
- App.UseHttpReports();
- if (env.IsDevelopment())
- {
- App.UseDeveloperExceptionPage();
- }
- App.UseRouting();
- App.UseAuthorization();
- App.UseEndpoints(endpoints =>
- {
- endpoints.MapControllers();
- });
- }
一切准备就绪后, 我们启动 WebAPi, 并且刷新几次页面, 到这里为止, WebAPI 的部分我们已经完成了
Step3: 集成可视化 Dashboard
使用 VS 新建一个 .Net Core MVC 应用, 新建完成后, 通过 Nuget 包我们分别安装 HttpReports.Dashboard ,HttpReports.SqlServer
引用完成后, 修改 Dahboard 项目的 appsetting.JSON 文件, 注意数据库要一致
- {
- "HttpReportsDashboard": {
- "Storage": {
- "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
- }
- }
- }
修改完成后, 我们接着修改 Dahboard 项目的 Startup.cs 文件
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddHttpReportsDashboard().UseSQLServerStorage();
- services.AddControllersWithViews();
- }
- public void Configure(IApplicationBuilder App, IWebHostEnvironment env)
- {
- App.UseHttpReportsDashboard();
- ...
- }
一切准备就绪后, 我们启动 Dashboard 项目, 如果没有问题的话, 会跳转到 Dashboard 的登陆页面
默认账号: admin 密码: 123456 , 登陆后可修改
例子中我用的是 SqlServer 数据库, 其他的数据库也是类似的, 我只创建了一个 WebAPI, 当然 HttpRrports 也支持多个 WebAPI, 我们只要修改 appsetting.JSON 的 Node, 你可以设置 Node 为 UserService, OrderService... , 到这里一个最简单集成 HttpReports 的例子已经完成了, 请尽情使用吧
Grpc 支持
微服务 Grpc 的流行, 我们也做了 Grpc 的适配, 如果您的项目中使用 Grpc 通信的话, 需要在你的 API 项目中, Nuget 包引用 HttpReports.Grpc, 注意这里是 API 项目引用, 不是 Dashboard 项目引用
修改 startup.cs
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddHttpReports().UseSQLServerStorage().UseGrpc();
- services.AddControllersWithViews();
- }
预警监控
HttpReports.Dashboard 集成了预警监控功能, 使用的话需要先配置 Smtp 邮箱, 否则接收不到预警邮件哦,
我们修改 Dashboard 项目的 appsetting.JSON 为下面即可
- {
- "HttpReportsDashboard": {
- "Storage": {
- "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
- },
- "Mail": {
- "Server": "smtp.qq.com",
- "Port": 465,
- "Account": "",
- "Password": "",
- "EnableSsL": true
- }
- }
- }
监控功能主要针对以下四项监控
响应超时
请求错误
IP 异常
请求量监控
简单说明下, 监控频率 选 1 小时, 也就是 1 个小时 运行一次, 然后填入预警的收件邮箱, 多个邮箱用逗号隔开, aaa.qq.com,bbb.qq.com , 服务节点 可以选中单个和多个节点, 默认的话, 下边 4 个监控都是关闭状态, 如果需要勾选启动即可, 具体的话这里就不多说了.
预警支持 WebHook, 配置后可以自动把预警信息推送到您定义的地址, 推送方式为 Post 推送
- {
- "Title":"...",
- "Content":"..."
- }
最后, 贴上两个完整的配置文件供大家参考
WebAPI 端
- {
- "HttpReports": {
- "Storage": {
- "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;",
- "EnableDefer": false,
- "DeferSecond": 20,
- "DeferThreshold": 3
- },
- "Node": "UserService",
- "Switch": true,
- "FilterStaticFiles": true
- }
- }
参数说明:
EnableDefer 开启为异步入库, 默认 false
DeferSecond 异步入库的秒数
DeferThreshold 异步入库的条数
Node 服务节点名称
Switch 是否开始数据收集, 默认 true
FilterStaticFiles 收集数据是否过滤静态文件, 默认 true
Dashboard 端
- {
- "HttpReportsDashboard": {
- "Storage": {
- "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
- },
- "UseHome": true,
- "ExpireDay":7,
- "Mail": {
- "Server": "smtp.qq.com",
- "Port": 465,
- "Account": "",
- "Password": "",
- "EnableSsL": true
- }
- }
- }
参数说明:
UseHome Dashboard 使用主页路由, 默认为 true,false 的话, 路由为 localhost/Dashboard
ExpireDay 收集数据的有效期, 默认 30 天
总结
HttpReports 是 .Net Core 环境下开源的 APM 系统, 非常适合微服务环境中使用, 如果是中小型项目的话, 那么使用 HttpReports 是一个不错的选择, 开源不易, 如果能帮助到您的话, 还请希望给个 Star 支持下, 感谢
GitHub: https://github.com/SpringLeee/HttpReports
MIT 协议
交流反馈
如果您在项目中使用了 HttpReports, 或者感兴趣的可以加入 QQ 群 897216102, 大家一起沟通, 有更新也会第一时间通知, 也可以添加我的微信, 希望可以帮助到您
捐赠
如您觉得 HttpReports 对您有帮助, 可以请作者媳妇儿喝一杯柠檬茶~
来源: https://www.cnblogs.com/myshowtime/p/12747746.html