透過 HealthChecks在監控各種服務時,您能為每個服務加上標籤 (Tags),後續自訂 Health Check Response 時即可透過這些標籤進行過濾動作,只取得/排除特定標籤服務運作資料。當您遇到下列者幾種情境,HealthChecks 的 Tags 可能會幫上不少忙:

  1. 管理人員/監控軟體 會將服務做分類,會比較方便進行監控與釐清問題,像是以網站/資料庫/儲存體分類
  2. 依據權限分類,DBA 只能看見目前 資料庫 運作情況,而維運人員可以看見所有服務運作情況






如下圖所示,我們可以使用 加入監控服務方法 (如:AddSqlServer) 內 Tags 參數,幫每項服務加上多個標籤,再透過不同自訂 HealthChecks Response 方法過濾並取得想要監控的服務。如此一來,即可能符合上述情境需求。





在開始操作前,建議您閱讀過 自訂 Health Checks Response。並參考範例程式 HealthCheckDemo



若您有印象,我們在 自訂 Health Checks Response 這篇文章有提到如何監控各種服務 (範例程式中 Startup.cs 的 ConfigureServices 方法內)。以下列程式碼為例,我們監控 SQL Server、Redis 與某個 WebAPI 運作情況。





無論是 AddSqlServer、AddRedis 或 AddUrlGroup ,這些方法內皆有一個可 null 的參數 IEnumerable<string> [] tags 可以使用,你能為每一個服務加上多個 Tags,如下面程式碼範例。





接下來,我們需要自訂 MapHealthChecks 與其 Response,如下列程式碼為例,我們新建立一個 /storageHealth,用來檢視關於儲存體服務運作狀況





您的程式碼看起來應該像這樣 (紅色框):





完成後,我們啟動服務:

左圖輸入為止 /health (不透過標籤過濾),所有服務運作狀態

右圖輸入網址 /storageHealth (只取得 storage 標籤服務),storage 服務運作狀態