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 則是這次的調查對象。
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
前面幾篇講到怎麼配置 InfluxDB、Grafana,這些基礎的東西搞定之後,就可以來安裝 Agent 收集資料了,Telegraf 跟 InfluxDB 同屬於 InfluxData 旗下。Telegraf 提供了很多收集資料的方式,在 Windows 的平台,Telegraf 主要是跟 Performance Monitor 拿資料,所以基本上可以拿到不少的資訊
很多監視系統都採用了 TSDB(Time Series Database)資料庫來儲存海量資料,InfluxDB 也是熱門的 TSDB 之一,紀錄一下安裝方式...
系統上線之後,你怎麼知道系統的資源還剩多少?服務有沒有活著?
Grafana 是一個用來呈現服務狀態的監視、預警通知軟體;有需多漂亮的圖表跟編排,也支援了很多 TSDB(Time Series Database)資料庫,當系統資源不足的時候用 Email、Slack 通知相關人員,相關人員分析後做的決策就會比較精準
ANTS Performance Profiler 是一個老牌的 .NET 效能分析工具,操作介面簡單易懂,分析功能涵蓋面大,它也陪了我打了不少的仗,唯一比較可惜的事,沒有支援遠端分析
最近遇到了一個問題,我有一個站台,在某些機器,CPU 會飆到 20% 上下,由於是要診斷遠端服務於是派出 jetbrains dotTrace Profiler 來幫幫我
https://www.jetbrains.com/profiler/features/
開發網站應用程式的時候,可以搭配一些診斷工具,方便開發人員除錯。
Glimpse (http://getglimpse.com/) 是一款內嵌至應用程式的診斷套件,不需要修改程式碼就能擁有診斷功能,強化瀏覽器 (F12,開發者模式) 辦不到的事情,比如:Sql Query。
安全性的部分,Glimpse 預設不允許遠端存取,只能用在開發環境,資訊洩漏的問題也幫我們想好了,若要開啟,請做好安全性設定