微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

前言介紹

HttpReports 是針對.Net Core 開發的輕量級APM系統,基於MIT開源協議, 使用HttpReports可以快速搭建.Net Core環境下統計,分析,圖表,監控,分佈式追蹤一體化的站點, 適應.Net Core WebAPI,MVC,Web項目, 通過引用Nuget構建Dashboard面板,上手簡單,適合在微服務架構中使用。

Github地址:
https://github.com/SpringLeee/HttpReports

在線預覽: https://moa.hengyinfs.com

賬號: admin 密碼 123456

開源不易,感興趣的同學歡迎 Github Star 一波...

主要功能

  • 接口調用指標分析
  • 多服務節點數據聚合分析
  • 慢請求,錯誤請求分析
  • 接口調用日誌查詢
  • 趨勢數據分析 (維度:分鐘,小時,天)
  • 多類型預警監控
  • HTTP調用分析
  • Grpc調用分析
  • 分佈式追蹤
  • 多數據庫支持,集成方便

數據庫支持

數據庫Nuget包名稱SqlServerHttpReports.SqlServerMySqlHttpReports.MySQLOracleHttpReports.OraclePostgreSQLHttpReports.PostgreSQL

HttpReports Dashboard-UI

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

快速開始

Step1: 初始化數據庫

HttpReports 需要手動創建數據庫, 我這裡使用 SqlServer 數據庫為例,創建數據庫 HttpReports, 當然數據庫名稱可以自由定義, 後邊程序要和這個數據庫名字對應。

Step2: 集成到WebAPI應用

打開VS開發工具,新建一個 WebAPI 應用,這裡 .Net Core 版本只要是2.0 以上即可,我這裡用的是3.1版本,創建完成後,Nuget 包引用

HttpReports

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

引用成功後,因為我使用的是SqlServer 數據庫,我們再Nuget引用 HttpReports.SqlServer

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

找到程序的 appsetting.json,修改為以下配置, 注意:這裡Storage 配置的數據庫名稱要和新建的數據庫名稱一致

<code>{
  

"HttpReports"

: {

"Storage"

: {

"ConnectionString"

:

"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"

},

"Node"

:

"UserService"

} } /<code>

配置完成後,然後我們再修改 StartUp.cs 文件,修改為以下代碼

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

<code>

public

void

ConfigureServices

(IServiceCollection services) {

services

.AddHttpReports

()

.UseSQLServerStorage

();

services

.AddControllers

(); }

public

void

Configure

(IApplicationBuilder app, IWebHostEnvironment env) {

app

.UseHttpReports

();

if

(env.IsDevelopment()) {

app

.UseDeveloperExceptionPage

(); }

app

.UseRouting

();

app

.UseAuthorization

();

app

.UseEndpoints

(endpoints => {

endpoints

.MapControllers

(); }); } /<code>

一切準備就緒後,我們啟動 WebAPi,並且刷新幾次頁面,到這裡為止,WebAPI的部分我們已經完成了

Step3: 集成可視化 Dashboard

使用VS新建一個 .Net Core MVC 應用, 新建完成後,通過Nuget包我們分別安裝 HttpReports.DashboardHttpReports.SqlServer

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

引用完成後,修改Dahboard項目的 appsetting.json 文件, 注意數據庫要一致

<code>{
  

"HttpReportsDashboard"

: {

"Storage"

: {

"ConnectionString"

:

"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"

} } } /<code>

修改完成後,我們接著修改 Dahboard 項目的 Startup.cs 文件

<code> 

public

void

ConfigureServices

(IServiceCollection services)

{ services.AddHttpReportsDashboard().UseSQLServerStorage(); services.AddControllersWithViews(); }

public

void

Configure

(IApplicationBuilder app, IWebHostEnvironment env)

{ app.UseHttpReportsDashboard(); ... } /<code>

一切準備就緒後,我們啟動Dashboard 項目,如果沒有問題的話,會跳轉到Dashboard的登陸頁面默認賬號:admin 密碼: 123456 , 登陸後可修改

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

例子中我用的是SqlServer 數據庫,其他的數據庫也是類似的,我只創建了一個WebAPI,當然HttpRrports 也支持多個WebAPI,我們只要修改appsetting.json 的 Node,你可以設置 Node 為 UserService, OrderService... ,到這裡一個最簡單集成 HttpReports 的例子已經完成了, 請盡情使用吧

Grpc 支持

微服務Grpc的流行,我們也做了Grpc的適配,如果您的項目中使用Grpc通信的話,需要在你的api項目中,Nuget包引用 HttpReports.Grpc,注意這裡是api項目引用,不是Dashboard 項目引用

微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

修改startup.cs

<code>

public

void

ConfigureServices

(IServiceCollection services) {

services

.AddHttpReports

()

.UseSQLServerStorage

()

.UseGrpc

();

services

.AddControllersWithViews

(); } /<code>

預警監控

HttpReports.Dashboard 集成了預警監控功能,使用的話需要先配置 Smtp 郵箱,否則接收不到預警郵件哦,

我們修改Dashboard項目的appsetting.json為下面即可

<code>{
  

"HttpReportsDashboard"

: {

"Storage"

: {

"ConnectionString"

:

"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"

},

"Mail"

: {

"Server"

:

"smtp.qq.com"

,

"Port"

:

465

,

"Account"

:

""

,

"Password"

:

""

,

"EnableSsL"

:

true

} } } /<code>
微服務HttpReports在Net Core中統計、分析、監控、分佈式追蹤

監控功能主要針對以下四項監控

  • 響應超時
  • 請求錯誤
  • IP異常
  • 請求量監控

簡單說明下,監控頻率 選1小時,也就是1個小時 運行一次,然後填入預警的收件郵箱,多個郵箱用逗號隔開, aaa.qq.com,bbb.qq.com , 服務節點 可以選中單個和多個節點,默認的話,下邊 4個監控都是關閉狀態, 如果需要勾選啟動即可,具體的話這裡就不多說了.

預警支持 WebHook,配置後可以自動把預警信息推送到您定義的地址,推送方式為Post推送

<code>{
 

"Title"

:

"..."

,

"Content"

:

"..."

} /<code>

最後,貼上兩個完整的配置文件供大家參考

WebAPI端

<code>{
  

"HttpReports"

: {

"Storage"

: {

"ConnectionString"

:

"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"

,

"EnableDefer"

:

false

,

"DeferSecond"

:

20

,

"DeferThreshold"

:

3

},

"Node"

:

"UserService"

,

"Switch"

:

true

,

"FilterStaticFiles"

:

true

} } /<code>

參數說明:EnableDefer 開啟為異步入庫,默認falseDeferSecond 異步入庫的秒數DeferThreshold 異步入庫的條數Node 服務節點名稱Switch 是否開始數據收集,默認trueFilterStaticFiles 收集數據是否過濾靜態文件,默認true

Dashboard端

<code>{
  

"HttpReportsDashboard"

: {

"Storage"

: {

"ConnectionString"

:

"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"

},

"UseHome"

:

true

,

"ExpireDay"

:

7

,

"Mail"

: {

"Server"

:

"smtp.qq.com"

,

"Port"

:

465

,

"Account"

:

""

,

"Password"

:

""

,

"EnableSsL"

:

true

} } } /<code>

參數說明:UseHome Dashboard使用主頁路由,默認為true,false 的話,路由為 localhost/DashboardExpireDay 收集數據的有效期,默認30天

總結

HttpReports 是 .Net Core環境下開源的APM系統,非常適合微服務環境中使用,如果是中小型項目的話,那麼使用 HttpReports 是一個不錯的選擇, 開源不易,如果能幫助到您的話,還請希望給個Star 支持下, 感謝

Github: https://github.com/SpringLeee/HttpReports

MIT協議


原文地址:博客園

原文來源:
https://www.cnblogs.com/myshowtime/p/12747746.html


分享到:


相關文章: