微服务统计,分析,图表,监控一体化的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,一经查实,立即删除!

相关文章

numpy.exp()简单理解

numpy.exp() 就相当于e的()次方 import numpy as npa np.exp(1) print(a)b np.exp(2) print(b)# 结果: # a为: 2.718281828459045 为e的一次方 # b为: 7.38905609893065 为e的二次方

查看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函数的调用&…

mysql revoke详解_MySQL删除用户权限(REVOKE)

MySQL 数据库中可以使用 REVOKE 语句删除一个用户的权限&#xff0c;此用户不会被删除。语法格式有两种形式&#xff0c;如下所示&#xff1a;1) 第一种&#xff1a;REVOKE [ ( ) ] [ , [ ( ) ] ]…ON FROM [ , ]…2) 第二种&#xff1a;REVOKE ALL PRIVILEGES, GRANT OPTIONFR…

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

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

C++静态成员函数

#include <iostream> using namespace std;//静态成员函数 //所有对象共享同一个函数 //静态成员函数只能访问静态成员变量class Person {public:static void func() {m_A 100;//静态成员函数可以访问静态成员变量 // m_B 200;//报错&#xff0c;静态成员函数不可以访…

python封装工具类多个项目使用_【arcpy项目实战】将多个点两两生成的最短路径pyhon代码封装入script中...

import osimport arcpyarcpy.env.workspacearcpy.GetParameterAsText(0)#选取环境cost arcpy.GetParameterAsText(1) #成本栅格shparcpy.GetParameterAsText(2) #选取要素的要素类out_patharcpy.GetParameterAsText(3) #命名字段裁剪后输出目录cursorarcpy.da.SearchCursor(shp…

asp.net core 实现支持多语言

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

C++成员变量和成员函数分开存储

在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 首先先看一下空对象占用多少空间&#xff1a; #include <iostream> using namespace std; //成员变量和成员函数是分开存储的class Person {};void test01() {Person p;cout &l…

dotnet 将C#编译为wasm让前端html使用

其实 dotnet 是全栈的首选&#xff0c;原因是因为可以开发的方向太多&#xff0c;比如大本营PC端&#xff0c;以及后台。还有移动端&#xff0c;包括 IOS 和安卓端。现在还能用来写前端&#xff0c;本文就来告诉大家如何在前端使用现有的C#代码&#xff0c;通过 WebAssembly 使…

python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...

实验环境&#xff1a;Python3.6OpenCV3.4pycharm2019代码实现&#xff1a;首先是一个简单的不用kalman滤波的运动目标追踪代码这里可以根据需要进行摄像头运动目标识别&#xff0c;只要把camera cv2.VideoCapture(./video/yellow_ball.mp4)# 改成camera cv2.VideoCapture(0) …

C++this指针的用途

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