上一篇文章 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,會告訴你如何呈現每一個服務狀態與反應時間。
0 留言