對於開發人員而言,如何在 Production 發生問題找到 root cause 是一門學問,有別於在開發環境可以透過 Debug 工具找出問題,Production 需要在不影響維運與資訊安全情況線發現問題所在。舉三個例子:


  1. 在開發與測試環境,你可以隨意輸入測試資料以檢測問題所在,但在 Production 環境,你不應該也不被允許進行測試,因為可能會影響正常營運。
  2. 測試環境出錯時,你可以將詳細錯誤訊息顯示在畫面上,但在 Production 環境,詳細的程式訊息很可能變成有心人攻擊的目標。
  3. 開發過程中,程式邏輯錯誤發生在你撰寫程式、執行程式時,但在 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 系列文章

  1. Azure Application Insight 介紹
  2. 如何在 Azure 建立 Application Insights
  3. Application Insights 功能說明
  4. Application Insights 可用性測試: URL Ping
  5. Application Insights 使用者行為分析
  6. 如何在你的 Visual Studio 內設定並使用 Application Insights (含本機使用)
  7. Application Insights Profiler
  8. 在地端伺服器 IIS (ASP.NET) 使用 Application Insight Agent
  9. 在地端伺服器 (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 整合有三種,包含:

  1. 無程式碼方式整合 (可以避免修改現有程式碼):
    1. 在 Azure Portal 進行設定,如:App Service、Azure VM、Azure Functions 與 Azure Kubernetes Service
    2. 地端伺服器整合,以部署 Agent 方式進行,支援 ASP.NET 與 Java
  2. 以程式為基礎整合:支援 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 與 逐項功能說明,有興趣的讀者可以看看。