前言介绍

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 在 .Net Core 的应用...相关推荐

  1. 基于Spring Cloud的微服务架构分析

    点击关注公众号,实用技术文章及时了解 来源:blog.caogo.cn/2021/06/20/ 基于Spring-Cloud的微服务架构分析 Spring Cloud是一个相对比较新的微服务框架,20 ...

  2. Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】

    上一篇我们介绍了使用Hystrix Dashboard来展示Hystrix用于熔断的各项度量指标.通过Hystrix Dashboard,我们可以方便的查看服务实例的综合情况,比如:服务调用次数.服务 ...

  3. 微服务来了,监控怎么办?

    设想今天是个愉快的周末,天气很好,你带着孩子在公园闲逛,这时候,一条短信来了: 瞬间整个人都不好了,到底怎么回事,上面的业务有没有预警,赶紧把相关人召集一下,最好赶紧去下公司吧!也许这时候你会想:能不 ...

  4. Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】

    在上一篇<服务容错保护(hystrix断路器)>的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的.而这些请求情况的指标信息都是HystrixComm ...

  5. 51信用卡在微服务架构下的监控平台架构实践

    一.背景介绍 51信用卡的技术架构是基于Spring Cloud所打造的微服务体系,随着业务的飞速发展,不断增多的微服务以及指标给监控平台带来了极大的挑战.监控团队在开源vs自研,灵活vs稳定等问题上 ...

  6. Spring Cloud Hoxton 版本微服务项目搭建 admin 监控客户端

    Spring Cloud Hoxton 版本微服务项目搭建 admin 监控客户端 前言 在上一篇文章博主已经讲解了admin 管理中心服务项目如何创建,不会的话可以前往学习,传送门:Spring C ...

  7. 微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用

    简单介绍 HttpReports 是 .Net Core 下的一个Web项目, 适用于WebAPI,Ocelot网关应用,MVC项目,非常适合针对微服务应用使用,通过中间件的形式集成到您的项目中,可以 ...

  8. 基于 Spring Cloud 的微服务架构分析

    -     前言    - Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, ...

  9. .NET Core微服务之基于Exceptionless实现分布式日志记录

    一.Exceptionless极简介绍 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WP ...

最新文章

  1. leetcode:242 : 有效的字母异位词
  2. simulink中from与goto模块的使用
  3. SpringSide 4 QuickStart运行Demo
  4. C++十进制数转换为二进制表示的算法(附完整源码)
  5. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)...
  6. mysql 插入学生信息_添加学生信息(连接数据库初学)
  7. Windows 0day成功验证之ETERNALBLUE
  8. Java不满足的依赖异常_java – 新的缺失/不满足的依赖项WildFly 9中的错误
  9. iOS -- MBProgressHUB
  10. 文字处理技术:完成了对表格的布局处理
  11. 美图秀秀去广告单文件版 v6.4.3.0
  12. 地理高程数据SRTM3简介
  13. 【408:计算机组成原理】起源:带你速看计算机伟大历史
  14. 基于全球模式比较计划CMIP6与区域气候-化学耦合模式 WRF-Chem 的未来大气污染变化模拟
  15. 统计学简介之一——统计量
  16. 云数据库与云服务器有什么区别?
  17. 对自己狠一点,开始写作吧
  18. Innosetup安装界面美化卸载界面美化
  19. excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc
  20. 【架构设计】作为架构师你应该掌握的画图技术

热门文章

  1. allegro下快捷键设置[转贴]
  2. pl/sql 中关于exception的学习笔记
  3. 弄断过河电缆_你说的是:剪断电缆线
  4. 知物由学 | 干货!一文了解安卓APP逆向分析与保护机制
  5. oneproxy检测主从复制同步延迟
  6. Codeforces Round #330 (Div. 2) B. Pasha and Phone 容斥定理
  7. Linux下查看进程对应的命令绝对路径
  8. 透过表象看本质!?之二数据拟合
  9. 在sp_executesql中使用like字句
  10. Xamarin效果第五篇之ScrollView动态滚动效果