如何使用 HttpReports 监控 .NET Core 应用程序
簡介
HttpReports 基于.NET Core 開發(fā)的APM監(jiān)控系統(tǒng),使用MIT開源協(xié)議,主要功能包括,統(tǒng)計, 分析, 可視化, 監(jiān)控,追蹤等,適合在中小項目中使用。
github:https://github.com/dotnetcore/HttpReports
我也很榮幸在.NET Conf 2020 大會上, 做了簡單的分享,開源不易,感興趣的同學歡迎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()方法 的上面。
修改 UserService 項目的啟動端口為7000,然后在解決方案中設(shè)置多項目啟動, 同時運行 UserService 和 Dashboard項目。
我們多請求幾次 UserService 的接口,然后再回到 Dashboard的頁面,選擇一下時間,現(xiàn)在已經(jīng)可以看到數(shù)據(jù)了!
到目前為止,我們已經(jīng)在.NET Core 的程序中簡單的使用了HttpReports,還有一些其他的功能,你可以在官方文檔中更詳細的介紹。
語雀 - https://www.yuque.com/httpreports/docs/uyaiil[1]
總結(jié)
在中小的項目中,你可以使用 HttpReports監(jiān)控你的 .NET Core程序,這很簡單, 并且它是開源的。
另外 HttpReports 也有一些其他的問題,比如,難以應(yīng)對海量數(shù)據(jù),沒有完全按照 OpenTrace 規(guī)范,這些和項目早期的設(shè)計有很大的關(guān)系。
但是沒有關(guān)系,現(xiàn)在有 OpenTelemetry,它兼容了OpenTracing和OpenCensus, 目前 1.0 版本也才發(fā)布了一個月左右,未來它會有更多的應(yīng)用場景。
所以,我在最近啟動了一個新項目 Furtuna,是按照 OpenTelemetry 規(guī)范去設(shè)計,你完全可以在 java, dotnet,php, go等語言中使用它,當然目前還只是在開發(fā)階段。
關(guān)于這個名字,Furtuna 是羅馬神話最古老的女神之一,能夠帶來幸福和機遇,寓意也很簡單,保護我們的程序,讓它變的更好。?
總結(jié)
以上是生活随笔為你收集整理的如何使用 HttpReports 监控 .NET Core 应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iNeuOS 工业互联网操作系统,在核工
- 下一篇: .NET:使用 LinqSharp 简化