只有累積,沒有奇蹟

2023年2月22日 星期三

[NETCore] 如何設定 ASP.NET Core 健康檢查(Health Check)功能 - Health Check UI

前言
在前一篇針對 ASP.NET Core 2.2 新特性 Health Check功能做基本的介紹,接著要分享的是在 BeatPulse 中實用的功能 Health Check UI,提供 UI 介面顯示及儲存 Health Check 檢查的結果內容,如果有多台時也可以在設定檔加上指定 URL 達到同時監控多台的效果,此篇就針對 Health Check UI 做介紹若有問題或是錯誤的地方歡迎網路的高手大大給予指導

Health Check UI
要使用 Health Check UI 起手式是要安裝其套件  AspNetCore.HealthChecks.UI ,指令如下
  1. install-package AspNetCore.HealthChecks.UI
安裝完 nuget package 之後,在 Startup.cs 要註冊 service 與 middleware,定義 healthCheck 的路徑為 /hc,UI 顯示的路徑為 /hc-ui
  1. public class Startup
  2. {
  3. public void ConfigureServices(IServiceCollection services)
  4. {
  5. services.AddHealthChecksUI();
  6. }
  7.  
  8. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  9. {
  10. app.UseHealthChecks("/hc", new HealthCheckOptions
  11. {
  12. Predicate = _ => true,
  13. ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
  14. });
  15.  
  16. app.UseHealthChecksUI(options =>
  17. {
  18. options.UIPath = "/hc-ui";
  19. });
  20. }
  21. }
下一步是 appsettings.json 加上 healthCheckUI 設定資訊,設定包含要檢查的內容網址、多久執行檢查的動作與發生意外時的處理機制,這裡設定每 10 秒進行一次檢查,檢查的內容來源為 /hc
  1. "HealthChecks-UI": {
  2. "HealthChecks": [
  3. {
  4. "Name": "Health Check Demo",
  5. "Uri": "http://localhost:5000/hc"
  6. }
  7. ],
  8. "EvaluationTimeOnSeconds": 10,
  9. "MinimumSecondsBetweenFailureNotifications": 60
  10. }
檢查內容這裡沿用上一篇介紹 healthCheck 的內容項目,檢查 mssql、Redis、Memory 與第三方 url 檢康狀況,這裡就不在多加說明,想了解細節可以參考上一篇文章內容說明
  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  4. services.AddHealthChecksUI();
  5.  
  6. services.AddHealthChecks()
  7. .AddMemoryHealthCheck("Memory Health Check")
  8. .AddSqlServer(Configuration["ConnectionStrings:DefaultConnection"], name: "SQL Server HealthCheck")
  9. .AddRedis(Configuration["ConnectionStrings:RedisConn"], name: "Redis HealthCheck")
  10. .AddUrlGroup(new Uri("https://marcus116.blogspot.com"), "ThirdParty API HealthCheck",HealthStatus.Degraded);
  11. //省略
  12. }
以上設定完畢後,執行專案並在瀏覽器輸入 /hc-ui,就可以看到將檢查的字串內容變為圖像顯示

Docker Image
作者也有提供 Docker health check image 給需要的人使用,可以透過 docker pull 取得 health check image 並使用 docker run 來執行
  1. PS C:\> docker pull xabarilcoding/healthchecksui
  2. Using default tag: latest
  3. latest: Pulling from xabarilcoding/healthchecksui
  4. 27833a3ba0a5: Pull complete
  5. 25dbf7dc93e5: Pull complete
  6. 0ed9cb15d3b8: Pull complete
  7. 874ea13b7488: Pull complete
  8. 73d82f2e96ee: Pull complete
  9. f856979cdc5c: Pull complete
  10. Digest: sha256:fe18f7655f05872cd8b2644ce7d4603b1d03ae4e0b24fa59f4d960cdc7bde6c4
  11. Status: Downloaded newer image for xabarilcoding/healthchecksui:latest
  12. PS C:\> docker run --name healthcheck-ui -p 5000:80 -d xabarilcoding/healthchecksui:latest
詳細可以參考 HealthChecks UI Docker Image

感想
使用 health Check UI 幫助我們可以更快的了解需要檢查應用程式的健康狀態資訊,如果您的應用程式有不止一台,可以在 health Check Ui 設定檔節點新增多筆檢查來源與名稱來自訂不同的檢查行為,舉例來說 MSDN 有列出如果 Health Check 顯示多筆,希望這篇介紹可以有幫助到有需要的朋友,謝謝

參考
Health checks in ASP.NET Core
ASP.NET Core MVC - 2.2 Health Checks


Related Posts:

  • [NET] Task.Run 與 Task.Factory.StartNew前言  從 .NET 4.0 版本新增 TPL (Task Parallel Library) 函式庫,常在公司專案 Code 中可以看到 Task.Run 與 Task.Factory.StartNew 兩種建立任務的方式,某次同事也有提問對兩者的差異性不太明白,因此這篇文章整理自己對於兩者的相關資訊與用法,希望有不清楚或是自己研究錯誤的地方歡迎提出討論 探索問題 Task.Run 與 Task.Factory.StartN… Read More
  • [NETCore] ASP.NET Core 建立與解析 QueryString 參數說明 之前介紹過在 .NET 中可以使用 Utility.ParseQueryString 處理 Url 中的參數,傳送門 : 使用 ParseQueryString 取得網址參數,但所使用的 System.Web 命名空間僅存在於 ASP.NET Framework 不支援 ASP.NET Core,在搜尋更好的解決方案中發現了在 ASP.NET Core 提供新的 API - QueryHelpers 可以達到同樣效果,此… Read More
  • [NETCore] ASP.NET Core 中的排程利器 - Coravel 前言 在 ASP.NET 中相信大家都會有過開發 Scheduler 排程的需求,過去可能會使用 ASP.NET 中較有名的框架像是 Quartz.NET 或是 Hangfire,兩種框架各有優缺點小弟不才剛好都有碰過,兩種排程框架各有喜好者可以依據自己的愛好來選用。今天所要介紹的是另一套 Schedule Job 框架 Coravel,作者在設計 API 時用 Fluent interface 方式進行設計,因此在使用上相當直覺與方便… Read More
  • [NETCore] ASP.NET Core 啟動失敗 - 嘗試存取通訊端被拒絕,因為存取權限不足問題  接獲同事詢問專案無法正常啟用,專案是使用 ASP.NET Core 2.2 開發並搭配 Kestrel 使用,在過去開發時都正常運作但今天忽然就遭遇啟動異常的狀況,在啟用時會跳出錯誤訊息為 'Unable to bind to http://localhost:5000 on the IPv4 loopback interface: '嘗試存取通訊端被拒絕,因為存取權限不足。''  ,這篇… Read More
  • [NETCore] 如何在 ASP.NET Core 中使用 YAML前言 今天同事在分享 ASP.NET Core 時介紹使用 YAML 作為組態設定檔,自己在過去比較少接觸 YAML 設定檔,也趁此機會來好好讓彼此熟悉一下,在 YAML 官網介紹說明文字如下 YAML is a human friendly data serialization standard for all programming languages. YAML 是一種可讀性高,適用於表達資料序列化的格式,在公司 CI… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com