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

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

用戶訪問了我們的三個程序,每個程序都安裝了HttpReports,它負責采集一些程序的數(shù)據(jù)和指標,然后通過Http的方式發(fā)送到Collector,簡單處理后,會錄入到不同的數(shù)據(jù)庫中,同時,HttpReports.UI 負責把這些數(shù)據(jù)多維度的展示出來。
快速開始
接下來,我會構(gòu)建監(jiān)控的 Dashboard,然后在我們的.NET Core 程序中安裝HttpReports來收集數(shù)據(jù),最后展示到UI上,讓我們看看這有多簡單!
首先,需要初始化數(shù)據(jù)庫,來存儲收集的數(shù)據(jù),這里我使用的是MySql數(shù)據(jù)庫(或者是SqlServer,PostgreSQL), 我手動創(chuàng)建了一個數(shù)據(jù)庫 HttpReports, 記住這個地址,后邊會用到。
引用 HttpReports.Dashboard
首先,我們需要構(gòu)建 Dashboard 來接收,處理和展示數(shù)據(jù),Dashboard 使用了 Vue + Antv + ElementUI 構(gòu)建了頁面,然后把靜態(tài)文件打包到了程序集,我們只要在.NET Core 應(yīng)用中,通過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
}
}
}現(xiàn)在參數(shù)有很多,不要擔心,我們現(xiàn)在只需要檢查數(shù)據(jù)庫的連接字符串,確保讓它可以成功的連接到你的數(shù)據(jù)庫,其他的參數(shù),你可以在官方的文檔中找到它們,本文就不再多說。
修改完 appsetting.json 后,我們接著修改 Dahboard 項目的 Startup.cs 文件:
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpReportsDashboard().AddMySqlStorage();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpReportsDashboard();
}然后 Run,如果沒有問題的話,會跳轉(zhuǎn)到Dashboard的登陸頁面,默認的賬號:admin 密碼: 123456

現(xiàn)在我們有了 Dashboard,但是沒有數(shù)據(jù), 我們還需要在我們的.NET Core 應(yīng)用中安裝HttpReports,它負責采集和發(fā)送數(shù)據(jù)。
引用HttpReports
我新建了一個 WebAPI 項目 UserService(用戶服務(wù)) ,然后我們通過 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
}
}參數(shù)介紹:
Transport - CollectorAddress - 數(shù)據(jù)批量發(fā)送的地址,配置Dashboard 的項目地址即可
Server - 服務(wù)的地址,User服務(wù)我用了localhost:7000
Service - 服務(wù)名稱 User
修改完成后,我們接著修改 UserService 項目的 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 項目的啟動端口為7000,然后在解決方案中設(shè)置多項目啟動, 同時運行 UserService 和 Dashboard項目。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>().UseUrls("http://localhost:7000");
});我們多請求幾次 UserService 的接口,然后再回到 Dashboard的頁面,選擇一下時間,現(xiàn)在已經(jīng)可以看到數(shù)據(jù)了!

到目前為止,我們已經(jīng)在.NET Core 的程序中簡單的使用了HttpReports,還有一些其他的功能,你可以在官方文檔中更詳細的介紹。
語雀:https://www.yuque.com/yuque-edenn/kb/gpgk0c5lg4fzvy85?singleDoc#
總結(jié)
在中小的項目中,你可以使用 HttpReports監(jiān)控你的 .NET Core程序,這很簡單, 并且它是開源的。
另外 HttpReports 也有一些其他的問題,比如,難以應(yīng)對海量數(shù)據(jù),沒有完全按照 OpenTrace 規(guī)范,這些和項目早期的設(shè)計有很大的關(guān)系,我也愿意接受大家的批評和意見,開源不能只是崇高的理想主義,社區(qū)需要各懷鬼胎的求同存異。
但是沒有關(guān)系,現(xiàn)在有 OpenTelemetry,它兼容了OpenTracing和OpenCensus, 目前 1.0 版本也才發(fā)布了一個月左右,未來它會有更多的應(yīng)用場景。
所以,我在最近啟動了一個新項目 Furtuna,是按照 OpenTelemetry 規(guī)范去設(shè)計,你完全可以在 java, dotnet,php, go等語言中使用它,當然目前還只是在開發(fā)階段。
關(guān)于這個名字,F(xiàn)urtuna 是羅馬神話最古老的女神之一,能夠帶來幸福和機遇,寓意也很簡單,守護我們的程序,讓它變的更好!
到此這篇關(guān)于使用 HttpReports 監(jiān)控 .NET Core 應(yīng)用程序的方法的文章就介紹到這了,更多相關(guān)HttpReports 監(jiān)控 .NET Core 應(yīng)用程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用DataAdapter填充多個表(利用DataRelation)的實例代碼
使用DataAdapter填充多個表(利用DataRelation)的實例代碼,需要的朋友可以參考一下2013-03-03
ASP.NET Sql Server安裝向?qū)В╝spnet_regsql.exe)錯誤解決一例
這個程序是注冊網(wǎng)站的數(shù)據(jù)庫,從而提供Membership , Role , Profile 等等諸多功能和管理權(quán)限的控件的使用。2010-03-03
Asp.net webForm設(shè)置允許表單提交Html的方法
下面小編就為大家分享一篇Asp.net webForm設(shè)置允許表單提交Html的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
ASP.NET MVC5驗證系列之Remote Validation
這篇文章主要為大家詳細介紹了ASP.NET MVC5驗證系列之Remote Validation,感興趣的小伙伴們可以參考一下2016-07-07

