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. Java设计模式:23种设计模式

    1. 软件设计模式概述 2. GoF 的 23 种设计模式的分类和功能 3. UML中的类图及类图之间的关系 4. 开闭原则——面向对象设计原则 5. 里氏替换原则——面向对象设计原则 6. 依赖倒置 ...

  2. 2684亿!阿里CTO张建锋:不是任何一朵云都撑得住双11

    2019天猫双11 成交额2684亿! "不是任何一朵云都能撑住这个流量.中国有两朵云,一朵是阿里云,一朵叫其他云."11月11日晚,阿里巴巴集团CTO张建锋表示,"阿里 ...

  3. ElasticSearch(二):文档的基本CRUD与批量操作

    ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式 ...

  4. [转载]2.8 UiPath中断活动Break的介绍和使用

    一.Break的介绍 Break: 用于结束当前循环. 注意: Break控件只能用于For Each 循环中 二.Break在UiPath中结合For Each循环的使用 1.打开设计器,在设计库中 ...

  5. Linux 学习(1) | 学习方向导图

    方向导图 文件系统导图  内核导图

  6. 关于MXNet

    关于人工智能,机器学习,深度学习 三者关系:从宏观到微观. 机器学习是人工智能的一部分,深度学习是机器学习的一部分. 基础:大数据. 关于深度学习 深度学习基于神经网络, 关于神经网络:通过叠加网络层 ...

  7. [error] hadoop:ls: `.': No such file or directory

    问题: 解决: https://stackoverflow.com/questions/28241251/hadoop-fs-ls-results-in-no-such-file-or-directo ...

  8. EFCore批量操作,你真的清楚吗

    背景 EntityFramework Core有许多新的特性,其中一个重要特性便是批量操作. 批量操作意味着不需要为每次Insert/Update/Delete操作发送单独的命令,而是在一次SQL请求 ...

  9. 云计算时代,你所不了解的 DevOps

    在本文中,我们讨论如何快速地从更高的层面理解DevOps,介绍准备改变文化的最佳实践.我们将讨论DevOps的目标以及从组织管理层得到支持的方法,为DevOps的概念打下基础.我们将试着从根本上介绍使 ...

  10. 力扣(LeetCode)字符串中的单词数 个人题解

    统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John" ...