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分析平台的更多相关文章

  1. Cucumber+Rest Assured快速搭建api自动化测试平台

    转载:http://www.jianshu.com/p/6249f9a9e9c4 什么是Cucumber?什么是BDD?这里不细讲,不懂的直接查看官方:https://cucumber.io/ 什么是 ...

  2. ELK_elk+redis 搭建日志分析平台

    这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elast ...

  3. linux下利用elk+redis 搭建日志分析平台教程

    linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm   elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...

  4. Docker: 快速搭建LNMP网站平台

    快速搭建LNMP网站平台 步骤: 1.自定义网络(这里建立一个自定义网络,名字叫 lnmp, 让LNMP网站的服务,都加入这个自定义网络)docker network create lnmp2.创建M ...

  5. Log4net快速配置使用指南。(快速搭建log4net日志平台手册)

    每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...

  6. 小白入门AI教程:教你快速搭建大数据平台『Hadoop+Spark』

    Apache Spark 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源 ...

  7. vue.js快速搭建图书管理平台

      前  言 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用.   1.DEMO样式 首先我们需要搭建一个简单的demo样式 ...

  8. 基于EasyUI 快速搭建权限管理平台

    前言: 一.用户角色权限设计思路: <1>不同职责的人员,对于系统操作的权限应该是不同;<2>可以对“组”进行权限分配;<3>权限管理系统应该是可扩展的;<4 ...

  9. Centos7下ELK+Redis日志分析平台的集群环境部署记录

    之前的文档介绍了ELK架构的基础知识,日志集中分析系统的实施方案:- ELK+Redis- ELK+Filebeat - ELK+Filebeat+Redis- ELK+Filebeat+Kafka+ ...

随机推荐

  1. Linux 如何创建或删除以横杠(-)开头的文件或目录

    小测试: [root@test test]# ls [root@test test]# touch -abc touch: invalid option -- 'b' Try `touch --hel ...

  2. SpringCloud 中集成Sentinel+Feign实现服务熔断降级

    Sentine 1.背景 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳 ...

  3. [2018-01-12] python 当天学习笔记

    Python模块 Python欧快(Moudule),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句. 模块让你能够有逻辑地组织你的Python代码段. 把相关的代 ...

  4. CSPS模拟 94

    以后干脆不要在准备提交的代码里放调试信息. 再也不忘删printf可是memset还是看不见... T1 玄学错误,不想研究.skyh帮我研究出来了.HACKDATA:1 1 T2 傻逼做法. 发现一 ...

  5. 【转载】InstantRun 原理——深度剖析 AndroidStudio 2.0

    一.前言 Android Studio 2.0开始支持 Instant Run 特性, 使得在开发过程中能快速将代码变化更新到设备上.之前,更新代码之后需要先编译一个完整的新Apk,卸载设备上已安装的 ...

  6. 记录一些html5和css3的一部分属性

    html5 标签1 video:视频 属性: src:视频的url autoplay:视频在就绪后马上播放 controls:向用户显示控件2 audio:音频 属性类似于video3 属性:drag ...

  7. 考试T1护花

    传送门 这题的提议似乎有什么问题,只要约翰选好了要抓那头牛,他就不会吃草了,站在原地傻等? 这题就是贪心,但在用cmp中比较单位时间吃草数量时,要用double型,不然可能会有点一样... 还有就是主 ...

  8. 爬虫学习--Requests库详解 Day2

    什么是Requests Requests是用python语言编写,基于urllib,采用Apache2 licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足 ...

  9. 20190725 NOIP模拟8

    今天起来就是虚的一批,然后7.15开始考试,整个前半个小时异常的困,然后一看题,T1一眼就看出了是KMP,但是完了,自己KMP的打法忘的一干二净,然后开始打T2,T2肝了一个tarjan点双就扔上去了 ...

  10. python_day2(列表,元组,字典,字符串)

    1.bytes数据类型 msg = '我爱北京天安门' print(msg.encode(encoding="utf-8")) print(msg.encode(encoding= ...