使用Azure Application Insignhts监控ASP.NET Core应用程序
Application Insignhts是微軟開發(fā)的一套監(jiān)控程序。他可以對(duì)線上的應(yīng)用程序進(jìn)行全方位的監(jiān)控,比如監(jiān)控每秒的請(qǐng)求數(shù),失敗的請(qǐng)求,追蹤異常,對(duì)每個(gè)請(qǐng)求進(jìn)行監(jiān)控,從http的耗時(shí),到SQL查詢的耗時(shí),完完整整的被記錄下來。當(dāng)對(duì)程序進(jìn)行優(yōu)化跟排錯(cuò)時(shí)非常好使。它原來是visualstudio online的一個(gè)服務(wù),現(xiàn)在合并進(jìn)了Azure,作為Azure Monitor的一個(gè)組件。雖然合并進(jìn)了Azure,但是Application Insignhts還是免費(fèi)的。
什么是Application Insignhts
Application Insights 是 Azure Monitor 的一項(xiàng)功能,是面向開發(fā)人員和 DevOps 專業(yè)人員的可擴(kuò)展應(yīng)用程序性能管理 (APM) 服務(wù)。使用它可以監(jiān)視實(shí)時(shí)應(yīng)用程序。它將自動(dòng)檢測(cè)性能異常,并且包含了強(qiáng)大的分析工具來幫助診斷問題,了解用戶在應(yīng)用中實(shí)際執(zhí)行了哪些操作。它旨在幫助持續(xù)提高性能與可用性。它適用于本地云、混合云或任何公有云中托管的各種平臺(tái)(包括 .NET、Node.js、Java 和 Python)上的應(yīng)用。它與 DevOps 進(jìn)程集成,并且具有與不同開發(fā)工具的連接點(diǎn)。可以通過與 Visual Studio App Center 集成來監(jiān)視和分析移動(dòng)應(yīng)用的遙測(cè)數(shù)據(jù)。
摘自微軟文檔:app-insights-overview
在Azure創(chuàng)建Application Insignhts服務(wù)
上一次介紹了如何注冊(cè)12個(gè)月免費(fèi)訂閱賬號(hào)如何白嫖微軟Azure12個(gè)月及避坑指南,使用賬號(hào)登錄管理平臺(tái)后,找到Application Insignhts服務(wù),點(diǎn)擊創(chuàng)建。
在創(chuàng)建界面選擇資源組,填寫實(shí)例名稱,選擇區(qū)域,選擇個(gè)離你近的。
創(chuàng)建一個(gè)標(biāo)記。標(biāo)記其實(shí)就是一組鍵值對(duì),主要用來統(tǒng)計(jì)的時(shí)候進(jìn)行區(qū)分跟合并用的。
最后點(diǎn)提交,等待一會(huì)就會(huì)提示部署完成。
部署成功后回到管理控制臺(tái)主頁,找到所有資源,點(diǎn)擊剛才填寫的實(shí)例名就可以查看詳情了。
這個(gè)頁面默認(rèn)會(huì)顯示幾個(gè)指標(biāo),因?yàn)榻貓D的時(shí)候是我已經(jīng)接入過了,所以有數(shù)據(jù),第一次進(jìn)去應(yīng)該是沒有數(shù)據(jù)的。
“檢測(cè)密鑰”比較重要,后面asp.net core程序?qū)拥臅r(shí)候需要用到。
在asp.net core程序接入Application Insignhts服務(wù)
在asp.net core程序接入Application Insignhts服務(wù)非常簡(jiǎn)單。簡(jiǎn)單的配置幾行代碼就可以運(yùn)行了,對(duì)業(yè)務(wù)代碼完全沒有侵入。
找一個(gè)asp.net core的程序,在.csproj文件下加入Application Insignhts包的引用。
在Startup.ConfigureServices下注入Application Insignhts相關(guān)的服務(wù)。
public void ConfigureServices(IServiceCollection services){//register application insightsservices.AddApplicationInsightsTelemetry();......}在配置文件appsettings.json下配置檢測(cè)密鑰。
{"ApplicationInsights": {"InstrumentationKey": "xxxxxxxxxxxxxx"},"Logging": {"LogLevel": {"Default": "Warning"}},...... }這樣asp.net core程序就配置好了。正常流程發(fā)布程序后部署它。
查看應(yīng)用程序監(jiān)控指標(biāo)
發(fā)布完程序,等程序運(yùn)行一段時(shí)間后就可以去管理界面查看監(jiān)控指標(biāo)了。
默認(rèn)有4個(gè)指標(biāo):
失敗的請(qǐng)求數(shù)
服務(wù)器響應(yīng)時(shí)間
服務(wù)器請(qǐng)求
可用性
其中比較有意思的是服務(wù)器響應(yīng)時(shí)間跟服務(wù)器請(qǐng)求這2個(gè)指標(biāo),對(duì)于我們調(diào)優(yōu)有非常大的意義。服務(wù)器響應(yīng)時(shí)間跟服務(wù)器請(qǐng)求點(diǎn)進(jìn)去其實(shí)是進(jìn)了性能指標(biāo)的界面。
該界面展示了服務(wù)器一段時(shí)間內(nèi)接受到的請(qǐng)求數(shù)量及響應(yīng)速度。同時(shí)列出一些慢的請(qǐng)求,點(diǎn)擊一個(gè)請(qǐng)求可以看到更加明細(xì)的信息。
點(diǎn)擊第一個(gè)最慢的看看為什么會(huì)這么慢。
可以看到這個(gè)請(qǐng)求耗時(shí)主要是SQL跟HTTP,其中SQL平均耗時(shí)17ms,這個(gè)肯定沒問題。HTTP平均耗時(shí)650ms那么這個(gè)接口慢的問題基本被鎖定了。
這還沒完,繼續(xù)點(diǎn)擊深入鉆取...示例按鈕,還有更加詳細(xì)的信息。
點(diǎn)擊示例按鈕,會(huì)列出該接口近期的一些調(diào)用示例。選一個(gè)耗時(shí)比較長(zhǎng)的進(jìn)入點(diǎn)擊進(jìn)去,還有更詳細(xì)的信息。
通過這圖就很清晰了,這個(gè)請(qǐng)求包含了多次SQL請(qǐng)求,跟2次HTTP請(qǐng)求。SQL請(qǐng)求耗時(shí)都在1ms左右,其中一次HTTP請(qǐng)求1.7s,那么很明顯了,就是這個(gè)HTTP請(qǐng)求拖慢了整個(gè)請(qǐng)求,所有需要對(duì)這個(gè)HTTP請(qǐng)求進(jìn)行優(yōu)化。
這還沒完,點(diǎn)擊其中的SQL請(qǐng)求,還有更詳細(xì)的信息,能顯示執(zhí)行了什么SQL語句。
點(diǎn)擊HTTP請(qǐng)求,同樣會(huì)列出詳細(xì)信息,包括請(qǐng)求的URL等信息。
其他指標(biāo)
除了默認(rèn)列出來的指標(biāo),其實(shí)還有很多指標(biāo)能夠查看。
在右側(cè)邊欄點(diǎn)擊指標(biāo)菜單,顯示指標(biāo)篩選界面。在該界面可以添加自己想看的指標(biāo)。比如CPU,內(nèi)存等信息。
實(shí)時(shí)指標(biāo)
實(shí)時(shí)指標(biāo)是個(gè)很酷炫的功能,可以在一個(gè)界面動(dòng)態(tài)實(shí)時(shí)顯示N個(gè)指標(biāo)。
總結(jié)
asp.net core程序使用Application Insignhts非常簡(jiǎn)單,通過簡(jiǎn)單的幾行代碼就集成完成,并且對(duì)業(yè)務(wù)代碼零侵入。Application Insignhts的監(jiān)控功能非常強(qiáng)大,可以對(duì)應(yīng)用程序、服務(wù)器各種指標(biāo)進(jìn)行監(jiān)控。特別是性能指標(biāo)的請(qǐng)求,對(duì)我們進(jìn)行線上程序的排錯(cuò),調(diào)優(yōu)具有非常強(qiáng)大指導(dǎo)意義。
關(guān)注我的公眾號(hào)一起玩轉(zhuǎn)技術(shù)
總結(jié)
以上是生活随笔為你收集整理的使用Azure Application Insignhts监控ASP.NET Core应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5分钟快速接入钉钉实现钉钉考勤
- 下一篇: Linux内核:容器底层cgroup如何