微服务统计,分析,图表,监控一体化的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){//使用HttpReportsapp.UseHttpReportsMiddlewire();app.UseMvc();}

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

.Net Core 3.0 和以上版本

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env){//使用HttpReportsapp.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 , 注意没有空格
UserNameWeb站点后台登录名,可修改
PasswordWeb站点后台登录密码,可修改

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

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
原生API100032.535
使用中间件100032.899

总结

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

https://github.com/SpringLeee/HttpReports

MIT

交流反馈

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看node的位置_升级Node版本RN项目运行报错cb.apply is not a function

今日打算安装一下ReactNative官方推荐的脚手架工具Ignite。infinitered/ignite​github.comIgnite是一套整合了 Redux 以及一些常见 UI 组件的脚手架。它带有一个命令行可以生成 app、组件或是容器。在安装的过程中,提示当前系统安装的node版本过低,无法…

C++构造函数调用规则

1.拷贝函数的值拷贝&#xff1a; #include <iostream> using namespace std;//构造函数的调用规则&#xff1a; //1,创建一个类&#xff0c;C编译器会给每个类都添加至少3个函数 //默认函数(空实现)&#xff0c;析构函数(空实现)&#xff0c;拷贝函数(值拷贝)class Pers…

HTTP Strict Transport Security (HSTS) in ASP.NET Core

本文是《2020年了&#xff0c;再不会HTTPS就老了》的后篇&#xff0c;本文着重聊一聊HTTP Strict Transport Security协议的概念和应用。启用 HTTPS 还不够安全现在很多站点通过HTTPS对外提供服务&#xff0c;用户在访问某站点&#xff0c;往往会直接输入站点域名&#xff08;b…

mysql支持的平台和操作系统_MySQL 数据库所支持的操作系统_MySQL

MySQL数据库所支持的操作系统&#xff1a;我们使用GNU Autoconf&#xff0c;因此将MySQL移植到所有使用Posix线程和C编译器的现代系统是可能的。(要求服务器支持线程。如果只是编译客户端代码&#xff0c;则只需要C编译器)。我们主要在Linux(SuSE和Red Hat)、FreeBSD和Sun Sola…

C++深拷贝与浅拷贝

浅拷贝&#xff1a; 简单的赋值拷贝操作。 深拷贝&#xff1a; 在堆区重新申请空间&#xff0c;进行拷贝操作。 首先我们先写这样的一段代码&#xff1a; #include <iostream> using namespace std; //深拷贝与浅拷贝class Person {public:Person() {cout << &qu…

BeetleX轻松搭建HTTP和Weboskcet网关

在新版本的BeetleX.Bumblebee中实现了对Weboskcet代理的支持&#xff0c;因此使用BeetleX搭建同时支持HTTP和Weboskcet的网关只需要几行代码的工作就能完成&#xff1b;接下来构建一个简单的网关程序并测试一下对asp.net core SignalR进行代理的应用。引用组件使用BeetleX构建网…

[功能发布]Excel与PowerBI互通互联升级版连接SSAS和AzureAS

Excel催化剂发自内心地热爱着PowerBI社区&#xff0c;从最开始提供了PowerBIDeskTop的互通互联功能&#xff0c;到无偿奉献所有此功能的核心原代码&#xff0c;再到今天的高潮&#xff0c;献上最具商业价值的高级功能&#xff0c;让企业级商业智能BI项目插上翅膀&#xff0c;最…

window oracle 只有bak文件怎么恢复_一起来学习Oracle的备份恢复基础吧-4

基于backup controlfile的恢复使用备份的控制文件在实际工作中的两种情况&#xff1a;当前控制文件全部损坏&#xff0c;而数据文件备份、控制文件备份及当前的日志处在不同的SCN版本&#xff0c;它们之间又增加过表空间(数据文件)。当前控制文件没有损坏&#xff0c;但是想恢复…

微服务、容器和Kubernetes的2020你怎么看?

历史上&#xff0c;有些年份比其他年份容易预测。因为市场出现的稳定性使追踪趋势线变得更加容易。2020年将是企业向微服务迁移的关键一年&#xff1a;稳定并逐步地向主流应用过渡。毫无疑问&#xff0c;IT组织正在转向微服务架构。微服务将应用程序分解为许多小部分&#xff0…

C++类对象作为类成员

C类中的成员可以是另一个类的对象&#xff0c;我们称该成员为对象成员 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>//类对象作为类成员 class Phone {public:Phone(string PName) {cout << "Phone函数的调用&…

.NET 大数据实时计算--学习笔记

摘要纯 .Net 自研大数据实时计算平台&#xff0c;在中通快递服务数百亿包裹&#xff0c;处理数据万亿计&#xff01;将分享大数据如何落地以及设计思路&#xff0c;技术重难点。目录背景介绍计算平台架构项目实战背景介绍计算平台架构分片实时计算计算平台数据统计模型开源项目…

asp.net core 实现支持多语言

asp.net core 实现支持多语言Intro最近有一个外国友人通过邮件联系我&#xff0c;想用我的活动室预约&#xff0c;但是还没支持多语言&#xff0c;基本上都是写死的中文&#xff0c;所以最近想支持一下更多语言&#xff0c;于是有了多语言方面的一些实践国际化/本地化介绍国际化…

C++this指针的用途

this指针的用途&#xff1a; 1.当形参和成员变量同名时&#xff0c;可用this指针来区分。 2.在类的非静态成员函数中返回对象本身&#xff0c;可使用return *this 每一个非静态成员函数只会诞生一份函数实例&#xff0c;也就是说多个同类型的对象会共用一块代码&#xff0c;那…

【实战 Ids4】小技巧篇:自定义登录页操作

今天的内容很简单&#xff0c;1分钟就能看完&#xff0c;5分钟就能学会&#xff0c;但是却是在我们平时开发中必须要学会的一个小知识点&#xff0c;我就不让大家走弯路了&#xff0c;直接看操作。在平时的IdentityServer4开发中呢&#xff0c;我们都是根据官方的Demo来操作一遍…

Asp.Net Core下的开源任务调度平台ScheduleMaster

从何说起2017年初的时候&#xff0c;由于当时项目需要做了一个乞丐版定时调度系统&#xff0c;那时候只在单机上实现了核心的调度功能。做这个玩意之前也调研了社区中开源的解决方案&#xff0c;找了几个实地部署试跑了一下&#xff0c;其实都很不错。但那时候我们有个问题就是…

C#录制视频

这是一个使用C#语言制作的录制框架&#xff0c;支持录制桌面&#xff0c;多屏&#xff0c;声音&#xff0c;摄像头&#xff0c;某个应用程序的界面1.安装使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索或者使用Nuget命令Install-Package Kogel.Record安装完成包后会出现…

python编程小案例_用Python3编程写第一个小案例!-Go语言中文社区

用Python3编程第一步&#xff01;今天博主跟大家聊一聊如何使用Python3编程第一步&#xff01;&#xff01;不喜勿喷&#xff0c;如有建议欢迎补充、讨论&#xff01;Come on&#xff01;在前面的几篇文章中我们已经学习了一些Python3 的基本语法知识&#xff0c;我们尝试来写一…

UnitTest in .NET(Part 5)

Photo &#xff1a;UnitTesting文 | Edison Zhou上一篇我们学习了单元测试的核心技术&#xff1a;存根、模拟对象和隔离框架&#xff0c;它们是我们进行高质量单元测试的技术基础。本篇会集中在管理和组织单元测试的技术&#xff0c;以及如何确保在真实项目中进行高质量的单元测…

java 大小写_java中如何进行大小写字母转换?

展开全部1.创建工程&#xff0c;或使用已有工程&#xff0c;在工程下创建包&#xff0c;包内新建一个类&#xff0c;我e69da5e887aa3231313335323631343130323136353331333365653262命名为Cases类&#xff0c;大家根据自己喜好随便命名&#xff0c;但请保持类名与文件名一致。2…

大量SQL的解决方案——sdmap

大量SQL的解决方案——sdmap最近看到群里面经常讨论大型应用中 SQL的管理办法&#xff0c;有人说用 EF/ EFCore&#xff0c;但很多人不信任它生成 SQL的语句&#xff1b;有人说用 Dapper&#xff0c;但将 SQL写到代码中有些人觉得不合适&#xff1b;有人提出用存储过程&#xf…