如何使用 HttpReports 监控 .NET Core 应用程序
简介
HttpReports 基于.NET Core 开发的APM监控系统,使用MIT开源协议,主要功能包括,统计, 分析, 可视化, 监控,追踪等,适合在中小项目中使用。
github:https://github.com/dotnetcore/HttpReports
我也很荣幸在.NET Conf 2020 大会上, 做了简单的分享,开源不易,感兴趣的同学欢迎Star,支持一下...
在线预览:http://apm.nonop.cn/
账号: admin 密码 123456
项目结构
用户访问了我们的三个程序,每个程序都安装了HttpReports,它负责采集一些程序的数据和指标,然后通过Http的方式发送到Collector,简单处理后,会录入到不同的数据库中,同时,HttpReports.UI 负责把这些数据多维度的展示出来。
快速开始
接下来,我会构建监控的 Dashboard,然后在我们的.NET Core 程序中安装HttpReports来收集数据,最后展示到UI上,让我们看看这有多简单!
首先,需要初始化数据库,来存储收集的数据,这里我使用的是MySql数据库(或者是SqlServer,PostgreSQL), 我手动创建了一个数据库 HttpReports, 记住这个地址,后边会用到。
引用 HttpReports.Dashboard
首先,我们需要构建 Dashboard 来接收,处理和展示数据,Dashboard 使用了 Vue + Antv + ElementUI 构建了页面,然后把静态文件打包到了程序集,我们只要在.NET Core 应用中,通过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": 3,"DeferThreshold": 10},"Check": {"Mode": "Self","Switch": true,"Endpoint": "","Range": "500,2000"},"Mail": {"Server": "smtp.163.com","Port": 465,"Account": "HttpReports@qq.com","Password": "*******","EnableSsL": true,"Switch": true}}
}
现在参数有很多,不要担心,我们现在只需要检查数据库的连接字符串,确保让它可以成功的连接到你的数据库,其他的参数,你可以在官方的文档中找到它们,本文就不再多说。
修改完 appsetting.json 后,我们接着修改 Dahboard 项目的 Startup.cs 文件:
public void ConfigureServices(IServiceCollection services){ services.AddHttpReportsDashboard().AddMySqlStorage();
}public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{ app.UseHttpReportsDashboard();
}
然后 Run,如果没有问题的话,会跳转到Dashboard的登陆页面,默认的账号:admin 密码: 123456
现在我们有了 Dashboard,但是没有数据, 我们还需要在我们的.NET Core 应用中安装HttpReports,它负责采集和发送数据。
引用HttpReports
我新建了一个 WebAPI 项目 UserService(用户服务) ,然后我们通过 Nuget 分别安装 HttpReports
, HttpReports.Transport.Http
。
安装完成后,同样的,我们修改 appsettings.json,简单配置一下
{"HttpReports": {"Transport": {"CollectorAddress": "http://localhost:5000/","DeferSecond": 10,"DeferThreshold": 100},"Server": "http://localhost:7000","Service": "User","Switch": true,"RequestFilter": [ "/api/health/*", "/HttpReports*" ],"WithRequest": true,"WithResponse": true,"WithCookie": true,"WithHeader": true}
}
参数介绍:
Transport - CollectorAddress - 数据批量发送的地址,配置Dashboard 的项目地址即可
Server - 服务的地址,User服务我用了localhost:7000 Service - 服务名称 User
修改完成后,我们接着修改 UserService 项目的 Startup.cs 文件
app.UseHttpReports();
这一行一定要放到 UseRouting() 和 UseEndpoints()方法 的上面。
修改 UserService 项目的启动端口为7000,然后在解决方案中设置多项目启动, 同时运行 UserService 和 Dashboard项目。
我们多请求几次 UserService 的接口,然后再回到 Dashboard的页面,选择一下时间,现在已经可以看到数据了!
到目前为止,我们已经在.NET Core 的程序中简单的使用了HttpReports,还有一些其他的功能,你可以在官方文档中更详细的介绍。
语雀 - https://www.yuque.com/httpreports/docs/uyaiil[1]
总结
在中小的项目中,你可以使用 HttpReports监控你的 .NET Core程序,这很简单, 并且它是开源的。
另外 HttpReports 也有一些其他的问题,比如,难以应对海量数据,没有完全按照 OpenTrace 规范,这些和项目早期的设计有很大的关系。
但是没有关系,现在有 OpenTelemetry,它兼容了OpenTracing和OpenCensus, 目前 1.0 版本也才发布了一个月左右,未来它会有更多的应用场景。
所以,我在最近启动了一个新项目 Furtuna,是按照 OpenTelemetry 规范去设计,你完全可以在 java, dotnet,php, go等语言中使用它,当然目前还只是在开发阶段。
关于这个名字,Furtuna 是罗马神话最古老的女神之一,能够带来幸福和机遇,寓意也很简单,保护我们的程序,让它变的更好。
如何使用 HttpReports 监控 .NET Core 应用程序相关推荐
- 微服务统计,分析,图表,监控, 分布式追踪一体化的 HttpReports 在 .Net Core 的应用...
前言介绍 HttpReports 是针对.Net Core 开发的轻量级APM系统,基于MIT开源协议, 使用HttpReports可以快速搭建.Net Core环境下统计,分析,图表,监控,分布式追 ...
- 使用Azure Application Insignhts监控ASP.NET Core应用程序
Application Insignhts是微软开发的一套监控程序.他可以对线上的应用程序进行全方位的监控,比如监控每秒的请求数,失败的请求,追踪异常,对每个请求进行监控,从http的耗时,到SQL查 ...
- 开源APM系统 HttpReports 在 .Net Core的应用
作者:SpringLeee 源文:https://www.cnblogs.com/myshowtime/p/12332508.html 前言 简单说明下,APM全称Application Perfor ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三
在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...
- 在ASP.NET Core应用程序中使用分布式缓存
本文要点 ASP.NET Core内置了分布式缓存接口. 分布式缓存的主要好处有性能.数据共享和稳定性. Couchbase服务器是一个内存优先的数据库,非常适合作为分布式缓存. NuGet程序包使得 ...
- netcore更新dll要停止_使 .NET Core 应用程序容器化
在本教程中,你将了解如何使用 Docker 容器化 .NET Core 应用. 容器具有很多特性和优点,如具有不可变的基础结构.提供可移植的体系结构和实现可伸缩性. 此影像可用于为本地开发环境.私有云 ...
- 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
.NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1: 安装和配置.NET Core以及Visual Studio Code 扩展... ...
- 运行Vue在ASP.NET Core应用程序并部署在IIS上
前言 从.NET Core 1.0开始我们就将其应用到项目中,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用AS ...
- 阿里云ARMS重磅推出小程序监控,助力小程序稳定运行
2018年是小程序蓬勃发展的一年,各大公司如腾讯.阿里.百度.头条等都陆续推出了自己的小程序,小程序已成为一个未来必然的趋势.移动互联网的新风口.据数据统计,目前已上线的微信小程序已超过100万,支付 ...
最新文章
- iOS 9: UIStackView入门
- oracle的用户自定义异常
- Python 字典类型的使用
- java中int转成String位数不足前面补零
- Kafka 源码解析:Server 端的运行过程
- 【clickhouse】Too many parts . Merges are processing significantly slower than inserts
- “通配符的匹配很全面, 但无法找到元素 ‘utillist‘ 的声明”的问题
- 1.08 亿条投注信息遭泄露,Elasticsearch 是祸因?!
- 2D 转换之 scale
- python开发软件的实例-由Python编写的MySQL管理工具代码实例
- 计算机算法设计与分析第四版在线,计算机算法设计与分析(第4版) 王晓东习题解答计算机算法设计与分析(第4版) 王晓东习题解答.pdf...
- layui表头样式_Layui表格好看样式
- 摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...
- 自动生成Makefile的全过程详解2
- vb.net 拓展教程目录
- 讨厌的HR [转贴] --一篇颇有争议的文章
- python实验大纲_Python程序设计实验-教学大纲-段震
- 高薪诚聘中高级软件工程师
- 2021美赛D题思路
- 农业物联网的道路上,还有个联想的身影
热门文章
- Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记
- Vue 的路由实现 Hash模式 和 History模式
- iTOP-4412开发板实现3路ADC数模转换驱动例程
- saltstack(三) --- salt-httpapi
- 构建和实现单点登录解决方案(转载于IBMdeveloperWorks)
- Objective-C中的self和super
- Oracle中的USEREVN()
- 桌面程序explorer_备份Internet Explorer 7搜索提供程序列表
- Ubuntu Core 给物联网提供更多安全支持
- springboot配置允许跨域访问