首頁>技術>

前言介紹

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

主要功能介面呼叫指標分析多服務節點資料聚合分析慢請求,錯誤請求分析介面呼叫日誌查詢趨勢資料分析 (維度:分鐘,小時,天)多型別預警監控HTTP呼叫分析Grpc呼叫分析分散式追蹤多資料庫支援,整合方便資料庫支援

資料庫Nuget包名稱SqlServerHttpReports.SqlServerMySqlHttpReports.MySQLOracleHttpReports.OraclePostgreSQLHttpReports.PostgreSQL

快速開始 Step1: 初始化資料庫

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

Step2: 整合到WebAPI應用

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

引用成功後,因為我使用的是SqlServer 資料庫,我們再Nuget引用 HttpReports.SqlServer 包

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

{  "HttpReports": {    "Storage": {       "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"     },    "Node": "UserService"  } } 

配置完成後,然後我們再修改 StartUp.cs 檔案,修改為以下程式碼

public void ConfigureServices(IServiceCollection services){\t \tservices.AddHttpReports().UseSQLServerStorage();\tservices.AddControllers();} public void Configure(IApplicationBuilder app, IWebHostEnvironment env){\t \tapp.UseHttpReports();\tif (env.IsDevelopment())\t{\tapp.UseDeveloperExceptionPage();\t}\tapp.UseRouting();\tapp.UseAuthorization();\tapp.UseEndpoints(endpoints =>\t{\tendpoints.MapControllers();\t});}

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

Step3: 整合視覺化 Dashboard

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

引用完成後,修改Dahboard專案的 appsetting.json 檔案, 注意資料庫要一致

{ "HttpReportsDashboard": { "Storage": { "ConnectionString": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;" } }}

修改完成後,我們接著修改 Dahboard 專案的 Startup.cs 檔案

public void ConfigureServices(IServiceCollection services) { \t services.AddHttpReportsDashboard().UseSQLServerStorage();\t services.AddControllersWithViews();} public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ \tapp.UseHttpReportsDashboard(); \t...}

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

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

Grpc 支援

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

修改startup.cs

public void ConfigureServices(IServiceCollection services){ services.AddHttpReports().UseSQLServerStorage().UseGrpc(); services.AddControllersWithViews();}預警監控

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

我們修改Dashboard專案的appsetting.json為下面即可

{ "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 } }}

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

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

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

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

{ "Title":"...", "Content":"..." }

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

WebAPI端{ "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 }}

引數說明:EnableDefer 開啟為非同步入庫,預設falseDeferSecond 非同步入庫的秒數DeferThreshold 非同步入庫的條數Node 服務節點名稱Switch 是否開始資料收集,預設trueFilterStaticFiles 收集資料是否過濾靜態檔案,預設true

Dashboard端{ "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 } }}

引數說明:UseHome Dashboard使用主頁路由,預設為true,false 的話,路由為 localhost/DashboardExpireDay 收集資料的有效期,預設30天

總結

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

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

MIT協議

原文地址:部落格園

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • K8S原理簡介及環境搭建