1. 程式人生 > >使用Azure Application Insignhts監控ASP.NET Core應用程式

使用Azure Application Insignhts監控ASP.NET Core應用程式

Application Insignhts是微軟開發的一套監控程式。他可以對線上的應用程式進行全方位的監控,比如監控每秒的請求數,失敗的請求,追蹤異常,對每個請求進行監控,從http的耗時,到SQL查詢的耗時,完完整整的被記錄下來。當對程式進行優化跟排錯時非常好使。它原來是visualstudio online的一個服務,現在合併進了Azure,作為Azure Monitor的一個元件。雖然合併進了Azure,但是Application Insignhts還是免費的。 ## 什麼是Application Insignhts Application Insights 是 Azure Monitor 的一項功能,是面向開發人員和 DevOps 專業人員的可擴充套件應用程式效能管理 (APM) 服務。 使用它可以監視實時應用程式。 它將自動檢測效能異常,並且包含了強大的分析工具來幫助診斷問題,瞭解使用者在應用中實際執行了哪些操作。 它旨在幫助持續提高效能與可用性。 它適用於本地雲、混合雲或任何公有云中託管的各種平臺(包括 .NET、Node.js、Java 和 Python)上的應用。 它與 DevOps 程序整合,並且具有與不同開發工具的連線點。 可以通過與 Visual Studio App Center 整合來監視和分析移動應用的遙測資料。 摘自微軟文件:[app-insights-overview](https://docs.microsoft.com/zh-cn/azure/azure-monitor/app/app-insights-overview) ## 在Azure建立Application Insignhts服務 上一次介紹瞭如何註冊12個月免費訂閱賬號[如何白嫖微軟Azure12個月及避坑指南](https://www.cnblogs.com/kklldog/p/azure-free-12m.html),使用賬號登入管理平臺後,找到Application Insignhts服務,點選建立。 ![UYPsET.png](https://s1.ax1x.com/2020/07/13/UYPsET.png) 在建立介面選擇資源組,填寫例項名稱,選擇區域,選擇個離你近的。 ![UYiZq0.png](https://s1.ax1x.com/2020/07/13/UYiZq0.png) 建立一個標記。標記其實就是一組鍵值對,主要用來統計的時候進行區分跟合併用的。 ![UYkTaV.png](https://s1.ax1x.com/2020/07/13/UYkTaV.png) 最後點提交,等待一會就會提示部署完成。 ![UYABz4.png](https://s1.ax1x.com/2020/07/13/UYABz4.png) 部署成功後回到管理控制檯主頁,找到所有資源,點選剛才填寫的例項名就可以檢視詳情了。 ![UYZbwR.png](https://s1.ax1x.com/2020/07/13/UYZbwR.png) 這個頁面預設會顯示幾個指標,因為截圖的時候是我已經接入過了,所以有資料,第一次進去應該是沒有資料的。 > “檢測金鑰”比較重要,後面asp.net core程式對接的時候需要用到。 ## 在asp.net core程式接入Application Insignhts服務 在asp.net core程式接入Application Insignhts服務非常簡單。簡單的配置幾行程式碼就可以運行了,對業務程式碼完全沒有侵入。 找一個asp.net core的程式,在.csproj檔案下加入Application Insignhts包的引用。 ``` ``` 在Startup.ConfigureServices下注入Application Insignhts相關的服務。 ``` public void ConfigureServices(IServiceCollection services) { //register application insights services.AddApplicationInsightsTelemetry(); ... ... } ``` 在配置檔案appsettings.json下配置檢測金鑰。 ``` { "ApplicationInsights": { "InstrumentationKey": "xxxxxxxxxxxxxx" }, "Logging": { "LogLevel": { "Default": "Warning" } }, ... ... } ``` 這樣asp.net core程式就配置好了。正常流程釋出程式後部署它。 ## 檢視應用程式監控指標 釋出完程式,等程式執行一段時間後就可以去管理介面檢視監控指標了。 ![UYMNwQ.png](https://s1.ax1x.com/2020/07/13/UYMNwQ.png) 預設有4個指標: 1. 失敗的請求數 2. 伺服器響應時間 3. 伺服器請求 4. 可用性 其中比較有意思的是伺服器響應時間跟伺服器請求這2個指標,對於我們調優有非常大的意義。伺服器響應時間跟伺服器請求點進去其實是進了效能指標的介面。 ![UYl6IJ.png](https://s1.ax1x.com/2020/07/13/UYl6IJ.png) 該介面展示了伺服器一段時間內接受到的請求數量及響應速度。同時列出一些慢的請求,點選一個請求可以看到更加明細的資訊。 點選第一個最慢的看看為什麼會這麼慢。 ![UY1nwF.png](https://s1.ax1x.com/2020/07/13/UY1nwF.png) 可以看到這個請求耗時主要是SQL跟HTTP,其中SQL平均耗時17ms,這個肯定沒問題。HTTP平均耗時650ms那麼這個介面慢的問題基本被鎖定了。 這還沒完,繼續點選深入鑽取...示例按鈕,還有更加詳細的資訊。 ![UY1HmT.png](https://s1.ax1x.com/2020/07/13/UY1HmT.png) 點選示例按鈕,會列出該介面近期的一些呼叫示例。選一個耗時比較長的進入點選進去,還有更詳細的資訊。 ![UY3QHS.png](https://s1.ax1x.com/2020/07/13/UY3QHS.png) 通過這圖就很清晰了,這個請求包含了多次SQL請求,跟2次HTTP請求。SQL請求耗時都在1ms左右,其中一次HTTP請求1.7s,那麼很明顯了,就是這個HTTP請求拖慢了整個請求,所有需要對這個HTTP請求進行優化。 這還沒完,點選其中的SQL請求,還有更詳細的資訊,能顯示執行了什麼SQL語句。 ![UYUNi8.png](https://s1.ax1x.com/2020/07/13/UYUNi8.png) 點選HTTP請求,同樣會列出詳細資訊,包括請求的URL等資訊。 ![UYUjQH.png](https://s1.ax1x.com/2020/07/13/UYUjQH.png) ## 其他指標 除了預設列出來的指標,其實還有很多指標能夠檢視。 在右側邊欄點選指標選單,顯示指標篩選介面。在該介面可以新增自己想看的指標。比如CPU,記憶體等資訊。 ![UYdBEq.png](https://s1.ax1x.com/2020/07/13/UYdBEq.png) ## 實時指標 實時指標是個很酷炫的功能,可以在一個介面動態實時顯示N個指標。 ![UY0iY6.gif](https://s1.ax1x.com/2020/07/13/UY0iY6.gif) ## 總結 asp.net core程式使用Application Insignhts非常簡單,通過簡單的幾行程式碼就整合完成,並且對業務程式碼零侵入。Application Insignhts的監控功能非常強大,可以對應用程式、伺服器各種指標進行監控。特別是效能指標的請求,對我們進行線上程式的排錯,調優具有非常強大指導意義。 關注我的公眾號一起玩轉技術 ![](https://s1.ax1x.com/2020/06/29/NfQ