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

简单介绍

HttpReports 是 .Net Core 下的一个Web项目, 适用于WebAPI,Ocelot网关应用,MVC项目,非常适合针对微服务应用使用,通过中间件的形式集成到您的项目中,可以让开发人员快速的搭建出一个 数据统计,分析,图表,监控 一体化的 Web站点。



主要模块

主要包含HttpReports 中间件 和 HttpReports.Web 的MVC项目;

HttpReports: https://github.com/SpringLeee/HttpReports

HttpReports.Web: https://github.com/SpringLeee/HttpReportsWeb

在线预览: http://175.102.11.117:8801 账号 admin 密码 123456

支持项目类型

?? 单个WebAPI应用
?? 多个独立WebAPI应用
?? Ocelot 网关应用
?? 单个MVC项目
?? 多个MVC项目

如何使用

1.添加 HttpReports 中间件

Nuget 包安装 HttpReports, 打开Startup.cs, 修改 ConfigureServices(IServiceCollection services) 方法,添加以下代码,放在 services.AddMvc() 之前都可以。

选择您的应用类型:

?? 单个WebAPI应用 或者 使用Ocelot网关的应用

修改 ConfigureServices 方法 ,

    public void ConfigureServices(IServiceCollection services)
    {
        // 添加HttpReports中间件
        services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer);

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
   }

?? ** 多个独立的WebAPI应用 **

假设有一个 授权(Auth)API应用,和一个支付(Pay)API应用,并且没有使用网关,需要分别在两个项目的Startup.cs文件的 ConfigureServices 方法中分别添加以下代码:

授权API应用(Auth)
services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer,"Auth");
支付Pay应用(Pay)
services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer,"Pay");  

?? 单个MVC应用

    public void ConfigureServices(IServiceCollection services)
    {
        // 添加HttpReports中间件
        services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer);

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

?? 多个MVC应用

假设有一个 电商(Mall)应用,和一个支付(Pay)应用,需要分别在两个项目的Startup.cs文件的 ConfigureServices 方法中分别添加以下代码:

电商MVC应用 (Mall)
services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer,"Mall");
支付MVC应用 (Pay)
services.AddHttpReportsMiddlewire(WebType.MVC, DBType.SqlServer,"Pay");  

?? 切换数据库

使用MySql数据库

 services.AddHttpReportsMiddlewire(WebType.API, DBType.MySql);

使用SqlServer数据库

 services.AddHttpReportsMiddlewire(WebType.API, DBType.SqlServer);
2.使用 HttpReports 中间件

修改 StartUp.cs 的 Configure 方法

.Net Core 2.2

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //使用HttpReports
        app.UseHttpReportsMiddlewire();  

        app.UseMvc();
    }

必须要放在 UseMVC() 方法和其他中间件的前边,否则不生效。

.Net Core 3.0 和以上版本

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        //使用HttpReports
        app.UseHttpReportsMiddlewire();

        app.UseRouting(); 

        app.UseAuthorization(); 

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }

必须要放在 UseEndpoints() 方法和其他中间件的前边,否则不生效。

3. appsettings.json 配置连接字符串

打开 appsetting.json, 添加数据库连接字符串, 需要手动创建数据库 HttpReports

"ConnectionStrings": {
    "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
  }
4. 运行Web应用

到这一步,已经配置完成了, 直接运行Web应用,如果中间有报错的话,可能是因为数据库的连接问题,请检查后再重试,如果没有报错的话,打开数据库 [HttpReports].[dbo].[RequestInfo], 如果能看到有数据记录,就说明 HttpReports 中间件的部分配置完成了,数据有了,下边开始配置 HttpReportsWeb 站点。


HttpReports.Web部分

github源码:https://github.com/SpringLeee/HttpReportsWeb
有需要的也可以下载源码后编译,默认的git分支是Core 2.2 版本,还有一个 core 3.0的分支;

这里提供 core2.2 和 3.0 的发布版本下载:

Core 2.2 发布版本: https://files.cnblogs.com/files/myshowtime/HttpReports2.2.zip
Core 3.0 发布版本:https://files.cnblogs.com/files/myshowtime/HttpReports3.0.zip

这里以 .Net Core2.2 版本为例, 下载发布版本后,解压文件, 找到 appsettings.json文件,并修改

{
  "ConnectionStrings": {
    "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
  },
  "HttpReportsConfig": {
    "DBType": "SqlServer", // MySql Or SqlServer
    "UserName": "admin",
    "Password": "123456"
  }
}
字段 说明
HttpReports 数据库连接字符串,要和上边配置的中间件的数据库一致
DBType 数据库类型 SqlServer MySql , 注意没有空格
UserName Web站点后台登录名,可修改
Password Web站点后台登录密码,可修改

修改数据库类型和连接字符串, 然后打开命令行,启动程序,或者部署到站点也可以

dotnet HttpReports.Web.dll

跳到登录页,输入默认账号 admin 密码 123456,登录到系统,看一下主要的几个页面

主页面

主要是Web应用 请求次数, 请求时间, 请求错误,错误率TOP, 响应最快和响应最慢等, 按天,月,年进行趋势分析, 服务节点 点击可以选中和取消,并且可以切换亮色和暗色主题

预警监控

HttpReports 监控预警主要针对以下几点:

?? 响应超时
?? 请求错误
?? IP异常
?? 请求量监控

如何添加监控:

这里演示添加一个监控,监控频率 选1小时,也就是1个小时 运行一次,然后填入预警的收件邮箱,可填写多个邮箱, 服务节点 可以选中单个和多个节点,默认的话,下边 4个监控都是关闭状态, 如果需要勾选启动即可

响应超时监控配置

预防一段时间内接口大量超时,设置超时时间为4000ms , 超时率为0.05% (最多支持两位小数,设置值要带上%号)

请求错误监控配置

预防一段时间内接口大量错误,设置错误HTTP状态码为500,503, 超时率为20%

IP异常监控配置

预防机器人请求,防止一段时间大量重复IP请求,设置IP重复率为15%

请求量监控

预防短时间内接口新增大量的请求,造成系统异常,设置 单位时间 请求量为100000,当请求量达到这个值触发预警

保存任务,任务自动运行,监控频率可以逐渐修改,找到适合系统的预警值, 如果数据达到预警值时,您就会收到HttpReports 发送给您的预警通知邮件

项目环境基本要求

使用HttpReports中间件的.Net Core 版本 2.2, 3.0, 3.1;

HttpReports.Web 的core版本为 2.2 , 3.0

性能事项

HttpReports 中间件存储数据是异步操作,所以对api接口请求的时间可以忽略, 存储数据是也只是存储基本信息,对请求内容和响应内容不作记录,后台监控任务采用Quartz.Net实现

下面是用PostMan做的一个简单测试:

WebAPI内的方法:

        public string Sql1()
        {
            SqlConnection con = new SqlConnection(
                "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HyBasicData;");

            var list1 =  con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list2 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list3 = con.Query(" select * from [HyBasicData].[dbo].[Customers] "); 

            return list1.Count().ToString();
        } 

PostMan分别对添加中间件和不添加中间件的 API请求 1000次,每300ms请求一次

说明 请求次数 平均响应时间 ms
原生API 1000 32.535
使用中间件 1000 32.899

总结

HttpReports 后台使用简单三层,前端使用BootStrap,如果你想给你的程序,快速的添加一套分析,图表,监控系统 ,那么使用HttpReports 是一个不错的选择,如果能帮助到您的话,还请希望给个Star, 感谢 ??

https://github.com/SpringLeee/HttpReports

MIT

交流反馈

如果您在项目中使用了HttpReports,欢迎添加QQ群, 有想法 有建议,有bug 都欢迎大家来沟通, 也可以添加我的微信,希望可以帮助到您

原文地址:https://www.cnblogs.com/myshowtime/p/12165843.html

时间: 2024-10-09 14:11:44

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

微服务架构【SpringBoot+SpringCloud+VUE】二 || 项目架构简介

目录 1.概述 2.开发环境 3.部署环境 4.项目管理 5.后端主要技术栈 6.前端主要技术栈 7.项目开发环境服务规划 8.学习交流QQ群[883210148] 1.概述 本项目是一个基于SpringBoot2.x+vue2.X的分布式微服务架构项目,项目会不断进行迭代更新.该项目后端利用SpringCloudAlibaba微服务架构解决方案进行重构.项目前端利用vue框架开发,页面展示主要为pc端和手机端(微信公众号). 2.开发环境 开发工具:IntellijIDEA.VSCode Ja

SpringCloud微服务(04):Turbine组件,实现微服务集群监控

本文源码:GitHub·点这里 || GitEE·点这里 一.聚合监控简介 1.Dashboard组件 微服务架构中为了保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型.断路器的状况反应程序的可用性和健壮性,它是一个重要指标.HystrixDashboard是作为断路器状态的一个组件,提供了数据监控和直观的图形化界面. 2.Turbine组件 Hystrix Dashboard组件监控服务的熔断情况时,每个服务都有图形界面,当微服务数量很多时,监控非常繁杂.为了同时监控多个服务的熔断

用友云服务治理平台 助力企业微服务架构落地

本文主要阐述使用微服务架构时,治理框架或者平台需要解决的主要问题,微服务落地实施过程中所遇到的关键问题和对应解决方案.同时,文章也介绍用友云旗下的微服务治理平台的核心功能和技术架构,以及微服务治理平台在用友云一些产品下的实践,下一步的发展计划和趋势. 用友云微服务治理平台由来 伴随互联网.云计算.大数据等技术的快速发展,越来越多的企业在信息化之后,将企业上云和数字化提上日程.软件架构的微服务方式重构.应用的自动化运维.容器化等需求强烈,催生出了众多的PaaS平台.同时,针对微服务,也涌现除了许多

微服务系列(一):微服务架构的优势与不足

微服务在当下引起广泛关注,成为文章.博客.社交媒体讨论和大会演讲的热点:在 Gartner 的 “Hype Cycle” 上排名也非常靠前.与此同时,在软件社区也有人质疑微服务并非新事物.反对者认为微服务只是 SOA (Service Oriented Architecture)的二度包装.然而,无论是追捧还是质疑,微服务架构拥有巨大优势,尤其是它让敏捷开发和复杂的企业应用交付成为可能. 本系列包含 7 篇文章,介绍了微服务的设计.构建和部署,并与传统的单体架构进行了比较.本系列将分析微服务架构

微服务架构的优势与不足-1(转)

「Chris Richardson 微服务系列」微服务架构的优势与不足 Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 转自http://blog.daocloud.io/microservices-1/ 作者介绍:Chris Richardson,是世界著名的软件大师,经典技术著作<POJOS IN ACTION>一书的作者,也是 cloudfoundry.com 最初

SOA和微服务架构的区别?

知乎用户 289 人赞同了该回答 谢多人邀请,其实前面几位的回答已经差不多了,在这里仅谈下自己的简单总结. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用.这些小应用之间通过服务完成交互和集成.每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套.在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身

你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud.各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大. 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专

Spring Boot、微服务架构和大数据

一文读懂 Spring Boot.微服务架构和大数据治理三者之间的故事 https://www.cnblogs.com/ityouknow/p/9034377.html 微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活.易扩展的系统,快速应对需求的变化:同时,随着用户的增加,如何保证系统的可伸缩性.高可用性,

一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物. 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活.易扩展的系统,快速应对需求的变化:同时,随着用户的增加,如何保证系统的可伸缩性.高可用性,成为系统架构面临的挑战.如果你想了解大数据的学习路线,想学习