ASP.NET Core 提供了健康檢查的 Middleware,可以讓我們很輕鬆的知道應用程式目前的本身的狀態以及應用程式所依賴其他服務的狀態;也可以讓容器協調器進行重新啟動容器或是暫停服務,比如 K8s 的 Liveness、Readiness
令人驚喜的是 AspNetCore.HealthChecks.UI 提供 UI / Alert 讓監視系統變得更有效率了
ASP.NET Core 提供了健康檢查的 Middleware,可以讓我們很輕鬆的知道應用程式目前的本身的狀態以及應用程式所依賴其他服務的狀態;也可以讓容器協調器進行重新啟動容器或是暫停服務,比如 K8s 的 Liveness、Readiness
令人驚喜的是 AspNetCore.HealthChecks.UI 提供 UI / Alert 讓監視系統變得更有效率了
以往我都使用 dotTrace 診斷 .NET 應用程式的使用狀況,可以得知執行時間、佔用記憶體、SQL Command 等。
但,NET Core 沒有支援 SQL ETW,代表攔截不到有關 SQL 的命令,於是我得尋求其它解方,MiniProfiler 則是這次的調查對象。
Microsoft.Extensions.DependencyInjection 是微軟實作的 DI Container,在 ASP.NET Core 大量的使用,無形之間已經成為一種開發標準,過去,還沒有使用 DI Container 時,我會使用靜態屬性來集中管理物件的生命週期,現在,集中管理物件的生命週期,我又多了一個選擇。
Microsoft.Extensions.DependencyInjection 支援 .NET Fx 4.6.1 以上
ASP.NET 的 Request 物件的生命週期很短,只會出現在一個 Http Request,當需要跨物件傳遞資料時,比如 HttpModule、HttpHandler、Page 、Controller,可以善用 Request 物件來存放短暫的狀態。
既然可以傳遞物件,那麼我們也可以在 Request 初始化的時候,將所需要的物件注入至 Request 裡面,然後再到到 Page / Controller 取出來用;在不同的專案範本可以使用的 Request 物件都不太一樣,接下來分享我已經知道的寫法。
CEF 的全名是 Chromium Embedded Framework,是用於嵌入 Chromium 瀏覽器的簡單框架,用 C++/CLI 開發
CefSharp 是在 .NET 平台封裝了 CEF,可以使用 C# / VB 語言開發
Winform 桌面應用程式要做出酷炫的畫面門檻相當的高,反觀當前的網頁技術發展的相當蓬勃,酷炫的畫面相當的多,CefSharp 可以讓我們嵌入 Chromium,輕鬆的使用前端技術,UI 的開發團隊,只要完成一個設計就可以同時給桌面應用程式和網站使用。
前端語言怎麼跟 C# 溝通?JavaScript + Handler 直接整合 C# 或者 JavaScript + Web API OWIN,這兩種方式都可以
AppMetrics 是一款 Open Source 跨平台的 .NET 的 Library,支援了 .NET Core 和 .NET 4.5.2,前面幾篇提到用 Telegraf 收集作業系統的性能指標,涵蓋整個作業系統,粒度大;當指標粒度要更精準則可以考慮用 AppMetrics 收集更細微的資訊。
範例提供了 ASP.NET Core 3.1、ASP.NET Core 2.2 | .NET4.8、Console Application 4.8、ASP.NET Web API 4.5.2 OWIN、Console Application 4.5.2
.NET Core 文件
https://www.app-metrics.io/
.NET 4.5.2 文件
https://alhardy.github.io/app-metrics-docs/
SQL Server 也是系統重要的平台之一,有了上一篇的經驗 使用 InfluxDB + Telegraf + Grafana 監視 Windows 平台資源,接下來實作監視 SQL Server
很多監視系統都採用了 TSDB(Time Series Database)資料庫來儲存海量資料,InfluxDB 也是熱門的 TSDB 之一,紀錄一下安裝方式...
系統上線之後,你怎麼知道系統的資源還剩多少?服務有沒有活著?
Grafana 是一個用來呈現服務狀態的監視、預警通知軟體;有需多漂亮的圖表跟編排,也支援了很多 TSDB(Time Series Database)資料庫,當系統資源不足的時候用 Email、Slack 通知相關人員,相關人員分析後做的決策就會比較精準
這個看似簡單的運作機制,看似相當的簡單,實作的過程中卻是傷痕累累,主要的原因是 ApplicationDeployment 類別在管理員模式下無法執行,為了解決這問題我動了點手腳,也花了不少時間