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
在Azure創建Application Insignhts服務
上一次介紹了如何注冊12個月免費訂閱賬號如何白嫖微軟Azure12個月及避坑指南,使用賬號登錄管理平臺后,找到Application Insignhts服務,點擊創建,

在創建界面選擇資源組,填寫實體名稱,選擇區域,選擇個離你近的,

創建一個標記,標記其實就是一組鍵值對,主要用來統計的時候進行區分跟合并用的,

最后點提交,等待一會就會提示部署完成,

部署成功后回到管理控制臺主頁,找到所有資源,點擊剛才填寫的實體名就可以查看詳情了,

這個頁面默認會顯示幾個指標,因為截圖的時候是我已經接入過了,所以有資料,第一次進去應該是沒有資料的,
“檢測密鑰”比較重要,后面asp.net core程式對接的時候需要用到,
在asp.net core程式接入Application Insignhts服務
在asp.net core程式接入Application Insignhts服務非常簡單,簡單的配置幾行代碼就可以運行了,對業務代碼完全沒有侵入,
找一個asp.net core的程式,在.csproj檔案下加入Application Insignhts包的參考,
<Project Sdk="Microsoft.NET.Sdk.Web">
...
...
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.13.1" />
</ItemGroup>
</Project>
在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程式就配置好了,正常流程發布程式后部署它,
查看應用程式監控指標
發布完程式,等程式運行一段時間后就可以去管理界面查看監控指標了,

默認有4個指標:
- 失敗的請求數
- 服務器回應時間
- 服務器請求
- 可用性
其中比較有意思的是服務器回應時間跟服務器請求這2個指標,對于我們調優有非常大的意義,服務器回應時間跟服務器請求點進去其實是進了性能指標的界面,

該界面展示了服務器一段時間內接受到的請求數量及回應速度,同時列出一些慢的請求,點擊一個請求可以看到更加明細的資訊,
點擊第一個最慢的看看為什么會這么慢,

可以看到這個請求耗時主要是SQL跟HTTP,其中SQL平均耗時17ms,這個肯定沒問題,HTTP平均耗時650ms那么這個介面慢的問題基本被鎖定了,
這還沒完,繼續點擊深入鉆取...示例按鈕,還有更加詳細的資訊,

點擊示例按鈕,會列出該介面近期的一些呼叫示例,選一個耗時比較長的進入點擊進去,還有更詳細的資訊,

通過這圖就很清晰了,這個請求包含了多次SQL請求,跟2次HTTP請求,SQL請求耗時都在1ms左右,其中一次HTTP請求1.7s,那么很明顯了,就是這個HTTP請求拖慢了整個請求,所有需要對這個HTTP請求進行優化,
這還沒完,點擊其中的SQL請求,還有更詳細的資訊,能顯示執行了什么SQL陳述句,

點擊HTTP請求,同樣會列出詳細資訊,包括請求的URL等資訊,

其他指標
除了默認列出來的指標,其實還有很多指標能夠查看,
在右側邊欄點擊指標選單,顯示指標篩選界面,在該界面可以添加自己想看的指標,比如CPU,記憶體等資訊,

實時指標
實時指標是個很酷炫的功能,可以在一個界面動態實時顯示N個指標,

總結
asp.net core程式使用Application Insignhts非常簡單,通過簡單的幾行代碼就集成完成,并且對業務代碼零侵入,Application Insignhts的監控功能非常強大,可以對應用程式、服務器各種指標進行監控,特別是性能指標的請求,對我們進行線上程式的排錯,調優具有非常強大指導意義,
關注我的公眾號一起玩轉技術

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/3533.html
標籤:.NET Core
