使用?HttpReports?監(jiān)控?.NET?Core?應(yīng)用程序的方法
簡(jiǎn)介
HttpReports 基于.NET Core 開(kāi)發(fā)的APM監(jiān)控系統(tǒng),使用MIT開(kāi)源協(xié)議,主要功能包括,統(tǒng)計(jì), 分析, 可視化, 監(jiān)控,追蹤等,適合在中小項(xiàng)目中使用。

github:https://github.com/dotnetcore/HttpReports
我也很榮幸在.NET Conf 2020 大會(huì)上, 做了簡(jiǎn)單的分享,開(kāi)源不易,感興趣的同學(xué)歡迎Star,支持一下...
在線預(yù)覽: http://apm.nonop.cn/
賬號(hào): admin 密碼 123456
項(xiàng)目結(jié)構(gòu)

用戶訪問(wèn)了我們的三個(gè)程序,每個(gè)程序都安裝了HttpReports,它負(fù)責(zé)采集一些程序的數(shù)據(jù)和指標(biāo),然后通過(guò)Http的方式發(fā)送到Collector,簡(jiǎn)單處理后,會(huì)錄入到不同的數(shù)據(jù)庫(kù)中,同時(shí),HttpReports.UI 負(fù)責(zé)把這些數(shù)據(jù)多維度的展示出來(lái)。
快速開(kāi)始
接下來(lái),我會(huì)構(gòu)建監(jiān)控的 Dashboard,然后在我們的.NET Core 程序中安裝HttpReports來(lái)收集數(shù)據(jù),最后展示到UI上,讓我們看看這有多簡(jiǎn)單!
首先,需要初始化數(shù)據(jù)庫(kù),來(lái)存儲(chǔ)收集的數(shù)據(jù),這里我使用的是MySql數(shù)據(jù)庫(kù)(或者是SqlServer,PostgreSQL), 我手動(dòng)創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù) HttpReports, 記住這個(gè)地址,后邊會(huì)用到。
引用 HttpReports.Dashboard
首先,我們需要構(gòu)建 Dashboard 來(lái)接收,處理和展示數(shù)據(jù),Dashboard 使用了 Vue + Antv + ElementUI 構(gòu)建了頁(yè)面,然后把靜態(tài)文件打包到了程序集,我們只要在.NET Core 應(yīng)用中,通過(guò)Nuget安裝即可。
新建一個(gè) .Net Core 的空的Web項(xiàng)目,支持 2.1 及以上版本

新建完成后,通過(guò)Nuget包分別安裝 HttpReports.Dashboard ,HttpReports.MySQL(或者是HttpReports.SqlServer, HttpReports.PostgreSQL)。


安裝完成之后,需要簡(jiǎn)單的配置一下,我們直接修改項(xiàng)目的 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
}
}
}現(xiàn)在參數(shù)有很多,不要擔(dān)心,我們現(xiàn)在只需要檢查數(shù)據(jù)庫(kù)的連接字符串,確保讓它可以成功的連接到你的數(shù)據(jù)庫(kù),其他的參數(shù),你可以在官方的文檔中找到它們,本文就不再多說(shuō)。
修改完 appsetting.json 后,我們接著修改 Dahboard 項(xiàng)目的 Startup.cs 文件:
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpReportsDashboard().AddMySqlStorage();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpReportsDashboard();
}然后 Run,如果沒(méi)有問(wèn)題的話,會(huì)跳轉(zhuǎn)到Dashboard的登陸頁(yè)面,默認(rèn)的賬號(hào):admin 密碼: 123456

現(xiàn)在我們有了 Dashboard,但是沒(méi)有數(shù)據(jù), 我們還需要在我們的.NET Core 應(yīng)用中安裝HttpReports,它負(fù)責(zé)采集和發(fā)送數(shù)據(jù)。
引用HttpReports
我新建了一個(gè) WebAPI 項(xiàng)目 UserService(用戶服務(wù)) ,然后我們通過(guò) Nuget 分別安裝 HttpReports , HttpReports.Transport.Http。

安裝完成后,同樣的,我們修改 appsettings.json,簡(jiǎn)單配置一下
{
"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
}
}參數(shù)介紹:
Transport - CollectorAddress - 數(shù)據(jù)批量發(fā)送的地址,配置Dashboard 的項(xiàng)目地址即可
Server - 服務(wù)的地址,User服務(wù)我用了localhost:7000
Service - 服務(wù)名稱 User
修改完成后,我們接著修改 UserService 項(xiàng)目的 Startup.cs 文件
app.UseHttpReports();
這一行一定要放到 UseRouting() 和 UseEndpoints()方法 的上面。
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpReports().AddHttpTransport();
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpReports();
.... 修改 UserService 項(xiàng)目的啟動(dòng)端口為7000,然后在解決方案中設(shè)置多項(xiàng)目啟動(dòng), 同時(shí)運(yùn)行 UserService 和 Dashboard項(xiàng)目。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>().UseUrls("http://localhost:7000");
});我們多請(qǐng)求幾次 UserService 的接口,然后再回到 Dashboard的頁(yè)面,選擇一下時(shí)間,現(xiàn)在已經(jīng)可以看到數(shù)據(jù)了!

到目前為止,我們已經(jīng)在.NET Core 的程序中簡(jiǎn)單的使用了HttpReports,還有一些其他的功能,你可以在官方文檔中更詳細(xì)的介紹。
語(yǔ)雀:https://www.yuque.com/yuque-edenn/kb/gpgk0c5lg4fzvy85?singleDoc#
總結(jié)
在中小的項(xiàng)目中,你可以使用 HttpReports監(jiān)控你的 .NET Core程序,這很簡(jiǎn)單, 并且它是開(kāi)源的。
另外 HttpReports 也有一些其他的問(wèn)題,比如,難以應(yīng)對(duì)海量數(shù)據(jù),沒(méi)有完全按照 OpenTrace 規(guī)范,這些和項(xiàng)目早期的設(shè)計(jì)有很大的關(guān)系,我也愿意接受大家的批評(píng)和意見(jiàn),開(kāi)源不能只是崇高的理想主義,社區(qū)需要各懷鬼胎的求同存異。
但是沒(méi)有關(guān)系,現(xiàn)在有 OpenTelemetry,它兼容了OpenTracing和OpenCensus, 目前 1.0 版本也才發(fā)布了一個(gè)月左右,未來(lái)它會(huì)有更多的應(yīng)用場(chǎng)景。
所以,我在最近啟動(dòng)了一個(gè)新項(xiàng)目 Furtuna,是按照 OpenTelemetry 規(guī)范去設(shè)計(jì),你完全可以在 java, dotnet,php, go等語(yǔ)言中使用它,當(dāng)然目前還只是在開(kāi)發(fā)階段。
關(guān)于這個(gè)名字,F(xiàn)urtuna 是羅馬神話最古老的女神之一,能夠帶來(lái)幸福和機(jī)遇,寓意也很簡(jiǎn)單,守護(hù)我們的程序,讓它變的更好!
到此這篇關(guān)于使用 HttpReports 監(jiān)控 .NET Core 應(yīng)用程序的方法的文章就介紹到這了,更多相關(guān)HttpReports 監(jiān)控 .NET Core 應(yīng)用程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- .NET?Core跨平臺(tái)資源監(jiān)控工具CZGL.SystemInfo用法
- .NET程序性能監(jiān)控系統(tǒng)Elastic?AMP的使用方法
- .Net中異步任務(wù)的取消和監(jiān)控的具體實(shí)現(xiàn)
- 使用NLog給Asp.Net Core做請(qǐng)求監(jiān)控的方法
- Asp.Net 5分鐘實(shí)現(xiàn)網(wǎng)頁(yè)實(shí)時(shí)監(jiān)控
- ASP.NET MVC5使用MiniProfiler監(jiān)控MVC性能
- CZGL.ProcessMetrics監(jiān)控.NET應(yīng)用
相關(guān)文章
asp.net實(shí)現(xiàn)簡(jiǎn)單分頁(yè)實(shí)例
這篇文章主要介紹了asp.net實(shí)現(xiàn)簡(jiǎn)單分頁(yè)的方法,實(shí)例分析了asp.net分頁(yè)的基本原理與實(shí)現(xiàn)流程,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
ASP.NET生成eurl.axd Http異常錯(cuò)誤的處理方法
在IIS6中同時(shí)啟用了ASP.NET 2.0 和 ASP.NET 4.0 后,網(wǎng)站程序可能會(huì)出現(xiàn)如下錯(cuò)誤:“ System.Web.HttpException: Path ‘//eurl.axd/‘ was not found. ”2011-05-05
用戶控件(ASCX)向網(wǎng)頁(yè)(ASPX)傳值使用反射實(shí)現(xiàn)
用戶控件向網(wǎng)頁(yè)傳遞值,網(wǎng)上的方法有很多,本文嘗試一下使用反射來(lái)實(shí)現(xiàn),感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03
ASP.NET?Core實(shí)現(xiàn)動(dòng)態(tài)審計(jì)日志功能
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)ASP.NET?Core設(shè)計(jì)和實(shí)現(xiàn)一個(gè)靈活、可擴(kuò)展的審計(jì)日志系統(tǒng),同時(shí)保持對(duì)主業(yè)務(wù)邏輯的最小化干擾,需要的可以參考下2024-03-03
IIS和.NET(1.1/2.0)的安裝順序及錯(cuò)誤解決方法
安裝順序及錯(cuò)誤的解決方法:基于.net2.0的情況與基于.net1.1的情況,分別給予解決方法,遇到此問(wèn)題的朋友可以了解下,或許對(duì)你的學(xué)習(xí)有所幫助2013-02-02
一個(gè)簡(jiǎn)單的文件MD5碼自動(dòng)計(jì)算比較器(附源碼)
一直在玩 WOW ,發(fā)現(xiàn)網(wǎng)上的 MD5 計(jì)算工具都沒(méi)有自動(dòng)比較功能,每次下載更新計(jì)算后,都要自己一個(gè)一個(gè)字母核對(duì),比較麻煩。 最近開(kāi)始學(xué)習(xí) C# ,用 .NET ,做了一個(gè)簡(jiǎn)單的文件MD5碼自動(dòng)計(jì)算比較器。2013-02-02
.NET Core使用FluentEmail發(fā)送郵件的示例代碼
這篇文章主要介紹了.NET Core使用FluentEmail發(fā)送郵件的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
C#將DataTable轉(zhuǎn)化為L(zhǎng)ist<T>
本文給大家講解的是如何使用C#將DataTable數(shù)據(jù)源轉(zhuǎn)化為L(zhǎng)ist<T>泛型集合(已知T類型) 的方法和示例,有需要的小伙伴可以參考下2015-06-06
ASP.NET?Core?MVC自定義Tag?Helpers用法介紹
這篇文章介紹了ASP.NET?Core?MVC自定義Tag?Helpers的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
詳解ASP.NET Core 2.0 路由引擎之網(wǎng)址生成(譯)
這篇文章主要介紹了詳解ASP.NET Core 2.0 路由引擎之網(wǎng)址生成(譯),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11

