使用?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,支持一下...
在線(xiàn)預(yù)覽: http://apm.nonop.cn/
賬號(hào): admin 密碼 123456
項(xiàng)目結(jié)構(gòu)
用戶(hù)訪(fǎng)問(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à),會(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(用戶(hù)服務(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ù)名稱(chēng) 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 是羅馬神話(huà)最古老的女神之一,能夠帶來(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)文章
使用DataAdapter填充多個(gè)表(利用DataRelation)的實(shí)例代碼
使用DataAdapter填充多個(gè)表(利用DataRelation)的實(shí)例代碼,需要的朋友可以參考一下2013-03-03log4net教程日志分類(lèi)和自動(dòng)維護(hù)示例
log4net能不能按照功能分類(lèi)呢?如果通過(guò)配置不同的logger,然后功能根據(jù)不同的LoggerName加載Ilog實(shí)例,是可以做到。但由于這些功能的log配置差異性極小,也許僅僅就是文件名不同。于是想通過(guò)代碼進(jìn)行配置,下面把方法分享如下2014-01-01ASP.NET Sql Server安裝向?qū)В╝spnet_regsql.exe)錯(cuò)誤解決一例
這個(gè)程序是注冊(cè)網(wǎng)站的數(shù)據(jù)庫(kù),從而提供Membership , Role , Profile 等等諸多功能和管理權(quán)限的控件的使用。2010-03-03Asp.net webForm設(shè)置允許表單提交Html的方法
下面小編就為大家分享一篇Asp.net webForm設(shè)置允許表單提交Html的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12WPF實(shí)現(xiàn)畫(huà)線(xiàn)動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)畫(huà)線(xiàn)動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12asp.net中WebResponse 跨域訪(fǎng)問(wèn)實(shí)例代碼
一篇朋友很久前寫(xiě)的asp.net中WebResponse 跨域訪(fǎng)問(wèn)示例,下面我轉(zhuǎn)過(guò)來(lái)與大家一起學(xué)習(xí)學(xué)習(xí),希望文章對(duì)大家會(huì)有幫助2014-01-01ASP.NET MVC5驗(yàn)證系列之Remote Validation
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之Remote Validation,感興趣的小伙伴們可以參考一下2016-07-07