對於開發人員而言,如何在 Production 發生問題找到 root cause 是一門學問,有別於在開發環境可以透過 Debug 工具找出問題,Production 需要在不影響維運與資訊安全情況線發現問題所在。舉三個例子:
- 在開發與測試環境,你可以隨意輸入測試資料以檢測問題所在,但在 Production 環境,你不應該也不被允許進行測試,因為可能會影響正常營運。
- 測試環境出錯時,你可以將詳細錯誤訊息顯示在畫面上,但在 Production 環境,詳細的程式訊息很可能變成有心人攻擊的目標。
- 開發過程中,程式邏輯錯誤發生在你撰寫程式、執行程式時,但在 Production 環境,錯誤可能發生在下班時間。
不知道如何在 Production 發現效能問題? 那你一定不知道 APM |
一般來說,在系統維運層面,Infrastructure Team 會監控伺服器 CPU、記憶體、網路頻寬、I/O...等運作狀況,但這些對於應用程式來說,這些資訊不足讓開發人員發現 root cause。也因為是應用程式面向的問題,也無法即時通知相關人員進行處理,等到客服回報系統問題,可能對企業已經產生相當程度的影響。因此,我們需要監控與管理軟體效能的 Application Performance Management (APM),來確保軟體在系統維運期間有一定的服務品質。
Azure Application Insight 是適用於開發人員與 DevOps 人員的 Application Performance Management 服務,除了 即時監控應用程式 與 偵測效能異常,還包含強大的分析工具可以快速找出問題,讓使用者完整了解應用程式實際運作情況。本系列文章將介紹 Azure Application Insight,若有錯誤或任何建議,請各位先進不吝提出,謝謝。
Azure Application Insight 系列文章
- Azure Application Insight 介紹
- 如何在 Azure 建立 Application Insights
- Application Insights 功能說明
- Application Insights 可用性測試: URL Ping
- Application Insights 使用者行為分析
- 如何在你的 Visual Studio 內設定並使用 Application Insights (含本機使用)
- Application Insights Profiler
- 在地端伺服器 IIS (ASP.NET) 使用 Application Insight Agent
- 在地端伺服器 (Java) 使用 Application Insight Agent
運作流程
首先,我們先來說明 Azure Application Insight 運作方式。如下圖所示,我們能在網頁用戶端應用程式 (如 JavaScirpt、Angular 前端應用程式)、Web 服務 (如 WebAPI) 加入監控,將應用程式相關資訊與相依性服務互動資訊上傳特定 Application Insight 服務進行彙整與分析。 在 Application Insight 服務,您能使用者檢視那些網頁 (Page Views)、檢視應用程式例外 (Exception) 訊息、查看追蹤日誌 (Trace Logs) 與了解那些服務被呼叫 (Service Call)。透過這些資訊,您更能完整了解系統整體運作情況。
雖然在 Application Insight 服務能檢視的內容相當豐富,您仍可以做些進階應用,包含警示、匯出至 Power BI 產生視覺報表、使用 Visual Studio 找出當下問題 或 使用 Rest API 或串流分析做更進階的應用。
整合方式
Azure Application Insight 整合有三種,包含:
- 無程式碼方式整合 (可以避免修改現有程式碼):
- 在 Azure Portal 進行設定,如:App Service、Azure VM、Azure Functions 與 Azure Kubernetes Service
- 地端伺服器整合,以部署 Agent 方式進行,支援 ASP.NET 與 Java
- 以程式為基礎整合:支援 ASP.NET 應用程式、ASP.NET Core 應用程式、 .NET 主控台應用程式、Java、Node.js、Python
這部分我們在後續的章節會逐一介紹如何實作整合...
您可以不需要重新部署程式,即可以在 App Service 啟用 Application Insights |
服務與監控項目
在 Azure Application Insight 服務中,能取得相當多的監控項目與相關資訊,除了可以讓使用者迅速辨識應用程式錯誤與效能問題,更能建立可用性測試,達到即時警告的效果。您也能依據真憑實據的分析資訊,對下一個開發週期進行規劃。Application Insight 監控的內容大致如下:
Application Insight 功能相當多,能讓使用者完整掌握維運狀況 |
- 儀錶板
- 應用程式對應
- 發現各應用程式元件
- 包含計量與警告
- Request
- 頻率、回應時間與錯誤
- Dependencies (相依服務)
- 頻率、回應時間與錯誤
- Exceptions
- 彙整統計
- 詳細 stack traces 與關聯性
- Client-side metrics
- Page Views 與 Performance
- Exception 追蹤
- 包含 AJAX 呼叫
- Performance
- 分析與搜尋
- 問題排除指南
- 即時指標串流
- 了解目前系統運作狀況
- 了解效能影響範圍
- 警示
- 自訂事件
- 使用者流程
- 測量新的 UX 或商務功能使用情況
- 可自訂遙測內容
- 可用性測試
- 即時得知住可用性
在本篇文章中,我們簡單介紹 "Production 為何需要 Application Performance Management" 與 "Azure Application Insight 運作流程、整合方式與所提供的服務"。 希望透過簡單的說明,讓您能了解 APM 的重要性 並更進一步的評估您的系統 是否能使用 Azure Application Insight 進行監控。在下一篇文章中,我們將開始介紹 如何在 Azure 建立 Application Insights 與 逐項功能說明,有興趣的讀者可以看看。
0 留言