上一篇文章 ASP.NET Core Health Checks 安裝與設定 中我們簡單說明如何設定並回覆目前網站運作狀態。但 HealthChecks 套件不僅僅如此而已,還能監視 SQL Server(資料庫), Redis(快取服務) 與其他 WebAPI 營運狀態。本篇文章將分別介紹如何設定這三項服務監控,若有錯誤或任何建議,請各位先進不吝提出,謝謝。


本系列實作的範例程式:HealthCheckDemo




下面是一張示意圖,你可以透過某個站台,除了監控自己本身服務是否正常,也能透過連線字串 (connection string) 或連結 (uri) 來確認相依的服務是否正常運作。 在檢視這篇文章時你可能會懷疑,為什麼我監控了多個服務,但卻始終只有一個回傳狀態? 在下一篇 "自訂 Health Checks Response" 我們會簡單說明如何呈現多個服務狀態。






加入 SQL Server Health Checks

Step 1. 首先我們必須先下載 AspNetCore.HealthChecks.SqlServer 套件。點選工具 > NuGet 套件管理員 > 管理方案的 NuGet 套件 





Step 2. 搜尋 HealthChecks.SqlServer,並且安裝 AspNetCore.HealthChecks.SqlServer  套件




Step 3. 在 appsetting.json 內加入資料庫連線字串 (若你的程式內已經有,則可以略過)




Step 4. 在 Startup.cs 內更改 ConfigureServices 方法,加上

var connectionString = Configuration.GetConnectionString("BloggingDatabase");

services.AddHealthChecks()

            .AddSqlServer(connectionString);




Step 5. 啟動網站,輸入網址 /health,可以看見資料庫運作狀況;你也能暫時將測試(本地)資料庫關閉,確認服務中斷。







加入 Redis Health Checks

Step 1. 首先我們必須先下載 AspNetCore.HealthChecks.Redis 套件。點選工具 > NuGet 套件管理員 > 管理方案的 NuGet 套件 





Step 2. 搜尋 HealthChecks.Redis,並且安裝 AspNetCore.HealthChecks.Redis套件




Step 3. 在 Startup.cs 內更改 ConfigureServices 方法,加上  AddRedis("連線字串") 即可,如下範例 (同時檢查本身網站、SqlServer 與 Redis,你可以依據需求拿掉不要的):

services.AddHealthChecks()

            .AddSqlServer(connectionString)

            .AddRedis(redisString);




Step 4. 啟動網站,輸入網址 /health,可以看見 Redis 運作狀況







加入 WebAPI Health Checks

Step 1. 首先我們必須先下載 AspNetCore.HealthChecks.Redis 套件。點選工具 > NuGet 套件管理員 > 管理方案的 NuGet 套件 



Step 2. 搜尋 AspNetCore.HealthChecks.Uris 套件,勾選專案並安裝





Step 3. 在 Startup.cs 內更改 ConfigureServices 方法,加上  AddUrlGroup 即可。AddUrlGroup 方法說明如下:

AddUrlGroup( [Uri], [名稱], [有問題呈現的狀態], [逾時時間] ); 


如下範例 (同時檢查本身網站、SqlServer、Redis 與 WebAPI,你可以依據需求拿掉不要的):






Step 4. 開啟專案,即可以看見健康狀態:





Step 5. 若有留心的讀者應該會發現,我監控的 WebAPI 位址也是方案內的某個專案,我們嘗試不要啟動這個專案,即會發現監控狀態呈現 Degraded (與我們設定的相同)




讀者可能會覺得奇怪,我監控了三個服務,為什麼呈現只有一個整體狀態? 在下一篇:自訂 Health Checks Response,會告訴你如何呈現每一個服務狀態與反應時間。