HttpReports 2.0 发布了 !!!

https://www.cnblogs.com/myshowtime/p/13806631.html

来源

???? 前言介绍

HttpReports 是基于.Net Core 开发的APM监控系统,使用MIT开源协议,主要功能包括,统计, 分析, 可视化, 监控,追踪等,适合在微服务环境中使用。

Github地址:https://github.com/dotnetcore/HttpReports

在线预览: http://122.51.188.23:8080 (带宽有限,第一次会有点慢)

在线文档: https://www.yuque.com/httpreports/docs

账号: admin 密码 123456

开源不易,感兴趣的同学还希望点个Star,支持下

???? 简单架构

???? 主要功能

  • 接口调用指标分析

  • 多服务节点数据聚合分析

  • 慢请求,错误请求分析

  • 接口调用日志查询

  • 多类型预警监控

  • HTTP,Grpc 调用分析

  • 分布式追踪

  • 多数据库支持,集成方便

  • 程序性能监控

2.0 更新

HttpReports 上一次发布HttpReports 还是在3个月前,HttpReports 2.0 版本的改动还是挺大的,所以建议老版本的升级前,还是先看下文档,本次更新主要以下几个方面

  • 项目结构调整,统一使用 HttpTransport

  • 使用 Vue + Antv + ElementUI 重构了Dashboard

  • 使用FreeSql ORM重构了存储层,之前兼容多数据库是个很头疼的问题,要写很多sql,FreeSql兼容的很好,现在项目里面你找不到一行sql, 用起来非常方便,性能也有提升,这里给叶老板点个赞

???? 预览

引用 HttpReports.Dashboard

首先,需要创建Dashboard 项目来接收,处理和展示数据,Dashboard 使用了 Vue + Antv +ElementUI 构建页面并打包到程序集,只需要Web项目引用 Nuget包安装即可,非常方便。

新建一个 .Net Core 的空Web项目,支持 2.1 及以上版本

新建完成后,通过Nuget包分别安装 HttpReports.Dashboard ,HttpReports.MySQL(或者是HttpReports.SqlServer, HttpReports.PostgreSQL)

引用完成后,简单配置一下, 修改项目的 appsetting.json 文件

{"HttpReportsDashboard": { "ExpireDay": 3,"Storage": {"ConnectionString": "DataBase=HttpReports;Data Source=localhost;User Id=root;Password=123456;", "DeferSecond": 10,"DeferThreshold": 100},"Mail": {"Server": "smtp.163.com","Port": 465,"Account": "HttpReports@qq.com","Password": "*******","EnableSsL": true,"Switch": true}} 
}

参数介绍:
ExpireDay - 数据过期天数,默认3天,HttpReports 会自动清除过期的数据
Storage - 存储信息
DeferSecond - 批量数据入库的秒数,建议值 5-60
DeferThreshold - 批量数据入库的数量,建议值100-1000
Mail - 邮箱信息,配置监控的话,可以发告警邮件

修改完成后,我们接着修改 Dahboard 项目的 Startup.cs 文件

public void ConfigureServices(IServiceCollection services)
{ services.AddHttpReportsDashboard().UseMySqlStorage(); 
} public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{ app.UseHttpReportsDashboard(); 
}

把Dashboard 程序启动起来,如果没有问题的话,会跳转到Dashboard的登陆页面 默认账号:admin 密码: 123456

现在可视化有了,但是没有数据,我们还需要 给服务端程序,添加 HttpReports 来收集信息。

引用HttpReports

我新建一个WebAPI 项目 UserService ,来充当用户服务,然后安装 HttpReports,当然你可以在你的项目中直接使用

Nuget 引用 HttpReports , HttpReports.Transport.Http

修改 appsettings.json,简单配置一下

{"HttpReports": {"Transport": {"CollectorAddress": "http://localhost:5000/","DeferSecond": 10,"DeferThreshold": 10},"Server": "http://localhost:7000","Service": "User","Switch": true,"RequestFilter": [ "/api/Helath/*", "/HttpReports*" ],"WithRequest": true,"WithResponse": true,"WithCookie": true,"WithHeader": true}
}

参数介绍:

Transport -
CollectorAddress - 数据发送的地址,配置Dashboard 的项目地址即可
DeferSecond - 批量数据入库的秒数,建议值 5-60
DeferThreshold - 批量数据入库的数量,建议值100-1000

Server - 服务的地址,
Service - 服务的名称
Switch - 是否开启收集数据
RequestFilter - 数据过滤,用 * 来模糊匹配
WithRequest - 是否记录接口的入参
WithResponse - 是否记录接口的出参
WithCookie - 是否记录Cookie 信息
WithHeader - 是否记录请求Header信息

修改完成后,我们接着修改 UserService 项目的 Startup.cs 文件

public void ConfigureServices(IServiceCollection services)
{services.AddHttpReports().UseHttpTransport();services.AddControllers();
}public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{app.UseHttpReports();....

修改 UserService 项目的启动端口为7000, 然后 VS 设置多项目启动, 同时运行 UserService 和Dashboard

public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>().UseUrls("http://localhost:7000");});

刷新下 UserService 的接口,再回到Dashboard的页面上面,已经可以看到数据了,一个简单的服务接入HttpReports,已经完成了,是不是很简单!

配置IP和端口 Server

HttpReports 需要显式指定Web程序的IP和端口,当然这个地址用外网和内网的都可以,在微服务环境中, 一个服务会开启多个实例, HttpReports 通过IP和端口来区分不同的程序实例。

在appsetting.json 中配置

我们直接在 appsetting.json 中设置 Urls 属性,你可以设置 "Server": "http://127.0.0.1:3000"
在命令行参数中配置

dotnet UserService.dll --urls="http://127.0.0.1:3000"

或者

dotnet UserService.dll --HttpReports:Server="http://127.0.0.1:5000"

交流沟通

贡献的最简单的方法之一就是是参与讨论和讨论问题(issue)。你也可以通过提交的 Pull Request 代码变更作出贡献。

可以添加QQ群沟通,也可以添加的微信,我拉你进微信群

写在最后

HttpReports 从第一次提交代码到现在已经10个月了,兼职开源,占据了生活很大一部分的时间, 一个个版本迭代到现在,2.0 不是最终版,未来可能会有 3.0 5.0,我看支持的同学也有很多,有很多人提了很多意见,感谢各位的支持,让我们觉得做这件事是有意义的,一定会把 HttpReports 做的越来越好

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

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

相关文章

.NET Standard 来日苦短去日长

作者&#xff1a;Richard翻译&#xff1a;精致码农-王亮原文&#xff1a;http://dwz.win/Q4h自从 .NET 5 宣贯以来&#xff0c;很多人都在问这对 .NET Standard 意味着什么&#xff0c;它是否仍然重要。在这篇文章中&#xff0c;我将解释 .NET 5 是如何改进代码共用并取代 .NET…

leetcode538. 把二叉搜索树转换为累加树

一:题目 二:上码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

【BCVP升级】泛型主键的使用

&#xff08;图片来源于SqlSugar官网&#xff0c;5年5.0&#xff09;大家假期已经结束了吧&#xff0c;还有80天左右就要到2021年了&#xff0c;你准备好了么&#xff1f;BCVP&#xff08;Blog.Core&Vue Project&#xff09;项目已经开源2年多&#xff0c;从来没有停更过&a…

leetcode404. 左叶子之和(迭代和递归)

一:题目 二:上码 迭代 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right…

Dotnet Core使用特定的SDKRuntime版本

Dotnet Core的SDK版本总在升级&#xff0c;怎么使用一个特定的版本呢&#xff1f;假期过完了&#xff0c;心情还在。今天写个短的。一、前言写这个是因为昨天刷微软官方文档&#xff0c;发现global.json在 SDK 3.0 后&#xff0c;更新了一些内容。文档提到了这个更新&#xff0…

Spring中IOC的理解(通俗易懂版)

文章目录1.IOC提出背景2:IOC的核心概念3:IOC的实现方式4:IOC的入门案例(1):思路分析(2):代码解析5:DI入门案例(1):思路分析(2):代码解析6:DI依赖注入的方式(1):前言(2):Set方式注入(3):构造器注入(4):依赖的自动装配7:注解开发模式的依赖注入(1):前言介绍(2):注解模式的依赖注入…

首个使用Blazor 技术实现的社区软件 BlazorCommunity 发布

BlazorCommunity 是首个使用Blazor 实现的开源社区软件&#xff0c; 其组件基于Element-Blazor &#xff0c; Element-Blazor 是一个 API 模仿 Element&#xff0c;CSS 直接使用 Element 样式&#xff0c;HTML 结构直接使用 Element HTML 结构 的 Web开发库。由于基于了…

leetcode112. 路径总和

一:题目 二:上码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

全球顶级开源大神们现身 COSCon'20

点击上方“开源社”关注我们| 作者&#xff1a;Will Wang| 编辑&#xff1a;沈于蓝| 责编&#xff1a;王皓月业界最具影响力的开源年度盛会2020中国开源年会 (COSCon20) 将于 10月24-25日由开源社举办。COSCon 以其独特定位及日益增加的影响力&#xff0c;吸引越来越多的顶级企…

做.NET开发多年,公司要我转Java...

10月13日&#xff0c;.NET5发布了(Release Candidate)RC2版本&#xff0c;包含语言新版本C#9和F#5等&#xff0c;这是正式版前的最后更新&#xff01;终于&#xff0c;万众期待的.NET5真的要来了&#xff01;公司让我转Java&#xff0c;我成功说服老板&#xff01;机会永远留给…

ASP.NET Core Blazor WebAssembly 之 .NET JavaScript互调

Blazor WebAssembly可以在浏览器上跑C#代码&#xff0c;但是很多时候显然还是需要跟JavaScript打交道。比如操作dom&#xff0c;当然跟angular、vue一样不提倡直接操作dom&#xff1b;比如浏览器的后退导航。反之JavaScript也有可能需要调用C#代码来实现一些功能&#xff0c;毕…

leetcode654. 最大二叉树

一:上码 二:上码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

浅议C#客户端和服务端通信的几种方法:Rest和GRPC和其他

本文来自&#xff1a;https://michaelscodingspot.com/rest-vs-grpc-for-asp-net/浅议C#客户端和服务端通信的几种方法&#xff1a;Rest和GRPC在C&#xff03;客户端和C&#xff03;服务器之间进行通信的方法有很多。一些功能强大&#xff0c;而其他功能则不是很多。有些非常快…

leetcode106. 从中序与后序遍历序列构造二叉树(java详解版)

一:题目 二:上码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

COSCon’20开源教育论坛介绍

点击上方“开源社”关注我们| 作者&#xff1a;周添一| 编辑&#xff1a;沈于蓝| 设计&#xff1a;冯艺怡| 责编&#xff1a;王皓月论坛简介在当今数据驱动的智能社会&#xff0c;软件作为数字智能社会的数据基础设施&#xff0c;承载了社会的高效运转。在这个软件定义世界的潮…

leetcode105. 从前序与中序遍历序列构造二叉树

一:题目 二:上码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

想进BAT等大厂,到底要怎么做?

职场&认知洞察 丨 作者 / findyi这是findyi公众号的第82篇原创文章最近我的公众号多了很多学生读者&#xff0c;很多人问我&#xff1a;如果要进BAT等大厂&#xff0c;我是应该直接工作还是考研&#xff1f;对于未来要从事程序员行业的朋友来说&#xff0c;要不要考研&…

.NET 5.0 RC 2 发布,正式版将在 11 月 .NET Conf 大会上发布

原文&#xff1a;http://dwz.win/ThX作者&#xff1a;Richard翻译&#xff1a;精致码农-王亮说明&#xff1a;1. 本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句。2. 本文有不少超链接&#xff0c;由于微信公众号和头条平台外链会被剔除 URL 地址&#xff0c;所以原…

leetcode216. 组合总和 III

一:题目 二:上码 class Solution {/**递归深度根据k值确定,宽度的话那就[1,9]因为递归不允许重复&#xff0c;那么的话我们需要每次在横向遍历的起始位置1*/private List<List<Integer>> ans new ArrayList<>();private List<Integer> path new Arr…

BeetleX之Websocket协议分析详解

Websocket应用协议已经普及多年了&#xff0c;它是HTTP1.1的内部升级协议&#xff0c;主要作用是补充HTTP1.1无法灵活地主动推送消息给客户端的缺陷问题。在这里主要介绍一下使用组件如何扩展一个完整的Websocket协议。协议介绍Websocket并不复杂&#xff0c;但协议文档内容还是…