監控在重要系統維運是非常重要的一環,隨時注意 網站服務伺服器資料庫 運作是否正常。 在ASP.NET Core 2.2 - 3.1 有個相當好用套件 - HealthChecks,讓開發人員可以透過撰寫簡單設定語法建立健康檢查機制,確認目前服務營運是否正常。他支援的服務相當的廣,除了簡單的 WebAPI、SQL Server,還支援 RabbitMQ、Redis、Azure Service Hub、Kafka、MongoDB、Kubernetes、SignalR...等多項服務 (可以參考 AspNetCore.Diagnostics.HealthChecks - GitHub)







本系列文章將逐一介紹

  1. ASP.NET Core Health Checks 安裝與設定
  2. ASP.NET Core 透過 Health Checks 監控 SQL Server, WebAPI 與 Redis 健康狀態
  3. ASP.NET Core 自訂 Health Checks Response
  4. ASP.NET Core Health Checks UI 圖形化介面呈現服務健康狀態
  5. ASP.NET Core 透過 Tags 過濾 Health Checks 資訊
  6. ASP.NET Core 整合 Azure Load Balancer 與  HealthChecks 進行相依服務監控
  7. ASP.NET Core Health Checks 與 Azure DevOps 整合
  8. ASP.NET Core Health Checks 監控 Shared folder 狀態
  9. Youtube -ASP.NET Core Health Checks Case Study - Azure Load Balancer

本系列文章若有錯誤或任何建議,請各位前輩不吝提出,謝謝。





ASP.NET Core Health Checks 安裝與設定

如前所述,Health Checks 目前支援 ASP.NET Core 2.2 -3.1 (本篇文章撰寫時間 2020.12.2),您可以開啟 Visual Studio 2017/2019 > 開新專案 > ASP.NET Core Web Application (Web 應用程式),選擇 MVC 或 Web Application 皆可。






因為 ASP.NET Core 應用程式已經隱含參考 Microsoft.AspNetCore.Diagnostics.HealthChecks 套件,所以我們不需要額外透過 NuGet 管理員安裝額外套件。 (監視部分服務 與 UI 呈現需要額外安裝套件)

開啟 Startup.cs,在 ConfigureServices 方法內 加入

services.AddHealthChecks();


相同檔案內,在 Configure 方法內加入

app.UseEndpoints(endpoints =>

{

     endpoints.MapHealthChecks("/health");

});


如下圖所示





接下來啟動網站,輸入網址 /health,即可看見簡單的運作狀態呈現 Healthy (運作正常)。健康狀態有三種:Healthy, Degraded 與 Unhealthy,你可以在 HealthStatus  檢視這個列舉物件,後續我們也會有些自訂方式分享。

理所當然,這是一個最簡單且最基本的運作狀態呈現,在下一篇,我們將加入 SQL Server、WebAPI 與 Redis 進行監控






參考資料

  1. AspNetCore.Diagnostics.HealthChecks - GitHub
  2. Health checks in ASP.NET Core - Microsoft docs