使用HttpReports快速搭建API分析平台
HttpReports
简单介绍
HttpReports 是 .Net Core下的一个Web组件,适用于 WebAPI 项目和 API 网关项目,通过中间件的形式集成到您的项目中, 通过HttpReports,可以让开发人员快速的搭建出一个 API 性能分析的基础报表网站。

主要包含 HttpReports 中间件 和 HttpReports.Web 报表项目:
HttpReports: https://github.com/SpringLeee/HttpReports
HttpReports.Web: https://github.com/SpringLeee/HttpReportsWeb
如何使用
1.运行 HttpReports.Web
在github下载 HttpReports.Web 项目,项目地址:https://github.com/SpringLeee/HttpReportsWeb, Web项目是.Net Core MVC 项目,使用三层实现。

下载完成后,在VS中打开,然后还原NuGet程序包,完成后首先 appsettings.json
appsettings.json
{
"ConnectionStrings": {
"HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
},
"HttpReportsConfig": {
"DBType": "SqlServer",
"UserName": "admin",
"Password": "123456"
}
}
主要参数:
- HttpReports:配置一个可用的连接字符串;
- DBType:数据库类型,支持SqlServer和MySql;
- UserName: Web项目的登录名;
- Password: Web项目的登录密码;
假设我们使用的是SqlServer 数据库,需要先配置ConnectionStrings,然后手动创建数据库 HttpReports(Web项目会根据数据库自动创建表,并且在第一次运行的时候Mock一些数据 ),我们直接F5运行项目, 没有问题的话,会直接跳到登录页面,输入用户名密码 admin 123456,登录后,应该可以看到下面的页面

现在可以看到项目有 auth,payment,sms 三个服务节点,服务节点的定义如下:
| 请求地址 | 服务节点 | 说明 |
|---|---|---|
| https://www.abc.com/auth/api/user/login | auth | |
| https://www.abc.com/log/api/user/login | log | |
| https://www.abc.com/api/user/login | default | 如果没有前缀的话,就是default节点 |
如果你的项目是单个WebAPI项目,那么服务节点只有一个 default,如果你的项目是 GateWay 网关项目,那么Web项目就可以读取到多个服务节点,比如 auth 认证,payment支付等。
2.在API项目中使用
首先要删除 Web 项目的Mock数据,打开数据库 HttpReports,打开表 RequestInfo,清空数据,执行Sql
Delete * From [HttpReports].[dbo].[RequestInfo]
配置数据库连接字符串
HttpReports 适用单个API项目和网关项目,这里使用 Ocelot网关项目为例.
我们打开appsetting.json, 配置数据库连接字符串,需要和Web项目一致

Nuget引用HttpReports
安装nuget包 HttpReports ,打开StartUp
在ConfigureServices 方法下添加:
services.AddHttpReportsMiddlewire();
如果是MySql数据库,则添加:
csharp services.AddHttpReportsMiddlewire(options =>{ options.DBType = DBType.MySql; });
加入到 Configure 方法 ,需要放在 app.UseMVC() 或者 app.UseOcelot().Wait() 的前面,要不然不生效
app.UseHttpReportsMiddlewire();
ConnectionStrings 配置的连接字符串和数据库类型要一致,全部完成了以后,我们就可以使用 Web 项目了。
项目环境基本要求
WebAPI或者网关项目支持的.Net Core 版本 2.2, 3.0, 3.1;
HttpReports.Web 的core版本为 2.2
性能事项
HttpReports 中间件是异步操作,所以对api接口请求的时间可以忽略,但是由于实质使用的是数据库存储,所以要注意直接请求到数据库的压力。
下面是用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请求一次
| 说明 | 请求次数 | 平均响应时间 |
|---|---|---|
| 原生API | 1000 | 32.535 |
| 使用中间件 | 1000 | 32.899 |
总结
HttpReports 的实现原理并不复杂,如果你想给你的 WebAPI项目,快速的添加一套分析系统 ,那么使用HttpReports 是一个不错的选择
联系作者
如果您在使用过程中遇到了什么问题或者有好的建议的话,可以添加我的微信,希望可以帮助到您

使用HttpReports快速搭建API分析平台的更多相关文章
- Cucumber+Rest Assured快速搭建api自动化测试平台
转载:http://www.jianshu.com/p/6249f9a9e9c4 什么是Cucumber?什么是BDD?这里不细讲,不懂的直接查看官方:https://cucumber.io/ 什么是 ...
- ELK_elk+redis 搭建日志分析平台
这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elast ...
- linux下利用elk+redis 搭建日志分析平台教程
linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...
- Docker: 快速搭建LNMP网站平台
快速搭建LNMP网站平台 步骤: 1.自定义网络(这里建立一个自定义网络,名字叫 lnmp, 让LNMP网站的服务,都加入这个自定义网络)docker network create lnmp2.创建M ...
- Log4net快速配置使用指南。(快速搭建log4net日志平台手册)
每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...
- 小白入门AI教程:教你快速搭建大数据平台『Hadoop+Spark』
Apache Spark 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源 ...
- vue.js快速搭建图书管理平台
前 言 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用. 1.DEMO样式 首先我们需要搭建一个简单的demo样式 ...
- 基于EasyUI 快速搭建权限管理平台
前言: 一.用户角色权限设计思路: <1>不同职责的人员,对于系统操作的权限应该是不同;<2>可以对“组”进行权限分配;<3>权限管理系统应该是可扩展的;<4 ...
- Centos7下ELK+Redis日志分析平台的集群环境部署记录
之前的文档介绍了ELK架构的基础知识,日志集中分析系统的实施方案:- ELK+Redis- ELK+Filebeat - ELK+Filebeat+Redis- ELK+Filebeat+Kafka+ ...
随机推荐
- 学习笔记05一般处理程序ashx
1.获取由表单传过来的参数var value1 = HttpContext.Request["健"]; 2.使得网站目录下的相对路径转化为绝对路径:(用于文件操作)var file ...
- Python的闭包以及迭代器
一,闭包 什么是闭包呢?闭包就是内层函数,对外层函数(非外层)的变量的引用,叫做闭包 def mz(): name = 'YJ' def xue(): print(name) #闭包 xue() mz ...
- NOIP模拟测试9
又考崩了咕咕咕... T1:随 好题标记 前置芝士: 原根:质数P的原根g满足1<=rt<P,且rt的1次方,2次方…(P-1)次方在模P意义下可以取遍1到(P-1)的所有整数. ...
- nmap学习笔记-扫描格式
习惯性的前言: 之前曾经零零星星的学习过一段时间的nmap,但是因为用的少,后续有慢慢的放下了,这次正好借着工作上的机会重新学习一下nmap,并记录在此. nmap端口状态: open:应用程序在该端 ...
- day 2 DP专场
上午讲了一上午背包,从01背包到完全背包到多重背包,感觉也没说什么,旁边的大佬一直在飞鸽里说让老师讲快点,然而最后也没人敢跟老师说.... 例题真的各个都是神仙题, 挂饰 好像就是一上午最简单的... ...
- 一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包
欢迎关注笔者的公众号: 小哈学Java, 专注于推送 Java 领域优质干货文章!! 个人网站: https://www.exception.site/essay/create-tar-gz-by-j ...
- 演示vsftpd服务匿名访问模式、本地用户模式的配置
文件传输协议(FTP,File Transfer Protocol) 即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和F ...
- python—mariadb自动部署主从
import configparser import os def config_mariadb_yum(): exists = os.path.exists('/etc/yum.repos.d/ma ...
- 推荐Java五大微服务器及其代码示例教程
来源素文宅博客:http://blog.yoodb.com/yoodb/article/detail/1339 微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序 ...
- IO类
Java的IO体系分为Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码.基本上,所有的IO类多是配对的,即有XXXInput,就有 ...