共用方式為


Azure 雲端服務的 Application Insights

Application Insights 透過將 Application Insights SDK 的資料與 Azure 診斷資料結合的方式,監視 Azure 雲端服務應用程式的可用性、效能、故障與使用狀況。 當您取得有關應用程式在現實世界的效能和效率的意見反應時,您可以在每個開發生命週期中針對設計方向做出明智的抉擇。

概觀儀錶板

注意

針對檢測金鑰擷取的支援將在 2025 年 3 月 31 日結束。 檢測金鑰擷取將會繼續運作,但我們不再提供該功能的更新或支援。 轉換至連接字串以利用新功能

必要條件

在開始之前,您需要:

  • Azure 訂用帳戶

    使用 Windows、Xbox Live 或其他 Microsoft 雲端服務適用的 Microsoft 帳戶登入

  • Microsoft Azure 工具 2.9 或更新版本。

  • 開發人員分析工具 7.10 或更新版本。

快速入門

使用 Application Insights 來監視您雲端服務的最快、最簡單方式就是在將服務發佈到 Azure 時選擇該選項。

範例診斷設定頁面

此選項會在執行階段檢測您的應用程式,為您提供監視您 Web 角色中的要求、例外狀況及相依性時所需的一切遙測。 此外也會監視來自您背景工作角色的效能計數器。 您應用程式產生的所有診斷追蹤資料也會一併傳送給 Application Insights。

如果此選項就是您所需的一切,您就已大功告成。

接下來的步驟包括檢視來自您應用程式的計量利用 Analytics 查詢您的資料

若要在瀏覽器中監視效能,您可以設定可用性測試在網頁中新增程式碼

下列各節將討論下列其他選項:

  • 將來自各種元件和組建組態的資料傳送給個別資源。
  • 新增來自您應用程式的自訂遙測。

使用 Application Insights 檢測的範例應用程式

在這個 範例應用程式中,Application Insights 會新增到雲端服務,搭配兩個背景工作角色託管於 Azure 中。

在下一節中,您將了解如何透過相同的方式來調整您的雲端服務專案。

規劃資源和資源群組

來自您應用程式的遙測將會在 Application Insights 類型的 Azure 資源中儲存、分析及顯示。

每個資源只屬於一個資源群組。 資源群組用來在經過協調的單一交易中管理成本、將存取權授與小組成員,以及部署更新項目。 例如,您可以撰寫指令碼來部署 Azure 雲端服務及其 Application Insights 監視資源,全部都在一個作業中完成。

元件的資源

建議您將維度屬性新增至每一個遙測項目以識別其來源角色。 在此方法中,計量圖表 (例如例外狀況) 通常會顯示來自各種角色之計數的彙總,但您可以視需要依角色識別碼分割該圖表。 您也可以依相同的維度來篩選搜尋。 此替代方案可讓您稍微容易同時檢視每個項目,但也會造成角色之間的一些混淆。

瀏覽器遙測通常包含在與其伺服器端 Web 角色相同的資源中。

請將各種元件的 Application Insights 資源放在一個資源群組中。 此方法讓您能夠輕鬆地一起管理它們。

區分開發、測試及生產環境

如果您是在上一個版本正在運作的情況下,為下一個功能開發自訂事件,您就會想要將開發遙測傳送給個別的 Application Insights 資源。 否則,會很難在來自即時網站的所有流量中找出您的測試遙測。

為了避免這種情況,請為您系統的每個組建組態或「戳記」(開發、測試、生產等) 建立個別的資源。 請將每個組建組態的資源放在個別的資源群組中。

若要將遙測傳送給適當的資源,您可以安裝 Application Insights SDK,讓它根據組建組態挑選不同的檢測金鑰。

了解如何針對不同階段動態設定檢測金鑰

為每個角色建立 Application Insights 資源

如果您已決定為每個角色建立個別的資源,或許也為每個組建組態建立一組個別的資源,則最簡單的方式就是全部都在 Application Insights 入口網站中建立。 如果您要建立很多資源,您可以將程序自動化

  1. Azure 入口網站中,選取 [新增] > [開發人員服務] > [Application Insights]

    Application Insights 窗格

  2. 在 [應用程式類型] 下拉式清單中,選取 [ASP.NET Web 應用程式]

每項資源均會以檢測金鑰來識別。 如果您想要手動設定或確認 SDK 的組態,稍後可能會需要此金鑰。

設定每個角色的 Azure 診斷

設定此選項即可使用 Application Insights 來監視您的應用程式。 針對 Web 角色,此選項提供效能監視、警示、診斷及使用狀況分析。 針對其他角色,您可以搜尋和監視 Azure 診斷,例如重新啟動、效能計數器及對 System.Diagnostics.Trace 的呼叫。

  1. 在 Visual Studio [方案總管] 中,[<YourCloudService >>角色] 下方,開啟每個角色的屬性。

  2. 在 [組態] 中選取 [傳送診斷資料至 Application Insights] 核取方塊,然後選取您先前建立的 Application Insights 資源。

如果您已決定針對每個組建組態使用個別的 Application Insights 資源,請先選取組態。

設定 Application Insights

這會將您的 Application insights 檢測金鑰插入名為 ServiceConfiguration.*.cscfg 的檔案中。 以下為範例程式碼

如果您想要變更傳送到 Application Insights 的診斷資訊層級,做法是直接編輯 .cscfg 檔案

在每個專案中安裝 SDK

使用此選項,您可以將自訂業務遙測新增至任何角色。 此選項會對您應用程式的使用與執行方式進行更精確的分析。

在 Visual Studio 中,設定每個雲端應用程式專案的 Application Insights SDK。

  1. 若要設定 Web 角色,請以滑鼠右鍵按一下專案,然後選取 [設定 Application Insights] 或 [新增]>[Application Insights 遙測]

  2. 若要設定背景工作角色

    a. 以滑鼠右鍵按一下專案,然後選取 [管理 NuGet 套件]

    b. 新增適用於 Windows 伺服器的 Application Insights

  3. 若要設定 SDK 以將資料傳送給 Application Insights 資源:

    a. 在適合的啟動函式中,從 .cscfg 檔案中的組態設定設定檢測金鑰:

        TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
        configuration.InstrumentationKey = RoleEnvironment.GetConfigurationSettingValue("APPINSIGHTS_INSTRUMENTATIONKEY");
        var telemetryClient = new TelemetryClient(configuration);
    

    b. 對您應用程式中的每個角色重複「步驟 a」。 請參閱範例:

  4. ApplicationInsights.config 檔案設定為一律複製到輸出目錄。

    .config 檔案中的訊息會要求您將檢測金鑰放置在此處。 不過針對雲端應用程式,最好是從 .cscfg 檔案中設定。 此方法可確保角色會在入口網站中正確識別。

設定狀態監視器以收集完整 SQL 查詢 (選用)

只有在您想要擷取 .NET Framework 的完整 SQL 查詢時,才需要執行此步驟。

  1. \*.csdef 檔案中,針對每個角色新增啟動工作,類似下列範例

    <Startup>
      <Task commandLine="AppInsightsAgent\InstallAgent.bat" executionContext="elevated" taskType="simple">
        <Environment>
          <Variable name="ApplicationInsightsAgent.DownloadLink" value="http://go.microsoft.com/fwlink/?LinkID=522371" />
          <Variable name="RoleEnvironment.IsEmulated">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
    
  2. 下載 InstallAgent.batInstallAgent.ps1,並放置於每個角色專案的 AppInsightsAgent 資料夾。 請務必透過 Visual Studio 檔案屬性或建置指令碼,將這兩個檔案複製到輸出目錄。

  3. 在所有背景工作角色上,新增環境變數:

      <Environment>
        <Variable name="COR_ENABLE_PROFILING" value="1" />
        <Variable name="COR_PROFILER" value="{324F817A-7420-4E6D-B3C1-143FBED6D855}" />
        <Variable name="MicrosoftInstrumentationEngine_Host" value="{CA487940-57D2-10BF-11B2-A3AD5A13CBC0}" />
      </Environment>
    

執行和發佈應用程式

  1. 執行應用程式,並且登入 Azure。

  2. 開啟您建立的 Application Insights 資源。

    個別資料點會顯示在搜尋中,彙總的資料則會顯示在計量瀏覽器中。

  3. 新增更多遙測 (請參閱以下章節),然後再發佈應用程式以取得即時診斷和使用方式的意見反應。

如果沒有任何資料,請執行下列作業:

  1. 若要檢視個別事件,請開啟 [搜尋] 圖格。
  2. 在應用程式中開啟各種頁面,以產生一些遙測。
  3. 請稍等片刻,然後按一下 [重新整理]

檢視 Azure 診斷事件

您可以在 Application Insights 的下列位置中,找到 Azure 診斷資訊:

  • 效能計數器顯示為自訂度量。
  • Windows 事件記錄顯示為追蹤和自訂事件。
  • 應用程式記錄、ETW 記錄和任何診斷基礎結構記錄顯示為追蹤。

若要查看效能計數器和事件計數,請開啟計量瀏覽器 並新增下列圖表:

Azure 診斷 數據

若要搜尋 Azure 診斷所傳送的各種追蹤記錄檔,請使用搜尋分析查詢。 例如,假設您有未處理的例外狀況導致角色損毀並需要回收。 這項資訊會出現在 Windows 事件記錄檔的「應用程式 (Application)」通道。 您可以使用 [搜尋] 來檢視 Windows 事件記錄檔錯誤,並取得例外狀況的完整堆疊追蹤。 這將協助您找出問題的根本原因。

Azure 診斷 搜尋

更多遙測

以下各節說明如何取得您應用程式各種層面的其他遙測。

從背景工作角色追蹤要求

在 Web 角色中,要求模組會自動收集有關 HTTP 要求的資料。 如需有關如何覆寫預設收集行為的範例,請參閱 範例 MVCWebRole \(英文\)。

您可以藉由與追蹤 HTTP 要求相同的方式追蹤背景工作角色,來擷取背景工作角色呼叫的效能。 在 Application Insights 中,要求遙測類型會測量一個單位的具名伺服器端工作,可以進行計時,而且可以獨立成功或失敗。 雖然 SDK 會自動擷取 HTTP 要求,您可以插入自己的程式碼,來追蹤對背景工作角色的要求。

查看兩個供用於回報要求的範例背景工作角色:

例外狀況

如需如何從各種 Web 應用程式類型收集未處理例外狀況的資訊,請參閱在 Application Insights 中監視例外狀況

範例 Web 角色具有 MVC5 以及 Web API 2 控制器。 來自這兩者的未處理例外狀況是使用下列處理常式擷取:

針對背景工作角色,有兩種方式可追蹤例外狀況:

  • 使用 TrackException(ex)。
  • 如果您已新增 Application Insights 追蹤接聽項 NuGet 套件,您可以使用 System.Diagnostics.Trace 來記錄例外狀況,如此範例所示

效能計數器

根據預設會收集下列計數器:

  • \Process(??APP_WIN32_PROC??)% Processor Time
  • \Memory\Available Bytes
  • .NET CLR Exceptions(??APP_CLR_PROC??)# of Exceps Thrown / sec
  • \Process(??APP_WIN32_PROC??)\Private Bytes
  • \Process(??APP_WIN32_PROC??)\IO Data Bytes/sec
  • \Processor(_Total)% Processor Time

若是 Web 角色,也會收集這些計數器︰

  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time
  • \ASP.NET Applications(??APP_W3SVC_PROC??)\Requests In Application Queue

您可以編輯 ApplicationInsights.config 來指定其他自定義或其他 Windows 性能計數器,如本範例所示。

效能計數器

背景工作角色的相互關聯遙測

若您有豐富的診斷經驗,您可以檢視導致失敗或高延遲要求的原因。 透過 Web 角色,SDK 會在關聯的遙測間自動設定相互關聯。

若要達成此檢視背景工作角色的目的,您可以使用自訂遙測初始設定式,為所有遙測設定一個通用 Operation.Id 內容屬性。 這可讓您一目了然延遲/失敗問題是相依性或程式碼所造成的。

方法如下:

  • 設定相互關聯識別碼到 CallContext 中,如此範例所示。 在此案例中,我們使用「要求 ID」做為相互關聯識別碼。
  • 新增自訂的 TelemetryInitializer 實作,其會將 Operation.Id 設為前面所設定的相互關聯識別碼。 例如,請見 ItemCorrelationTelemetryInitializer
  • 新增自訂的遙測初始設定式。 您可以在 ApplicationInsights.config 檔案或程式碼中執行此作業,如此範例所示

用戶端遙測

若要取得瀏覽器型遙測,例如頁面檢視計數、頁面載入時間或指令碼例外狀況,並在您的頁面指令碼中撰寫自訂遙測,請參閱將 JavaScript SDK 新增至網頁

可用性測試

若要確認應用程式處於線上狀態且能夠回應,請設定 Web 測試

將所有內容一起顯示

如需您系統的整體情況,您可以將重要的監視圖表在一個儀表板上一起顯示。 例如,您可以釘選每個角色的要求和失敗計數。

如果您的系統使用其他 Azure 服務 (例如「串流分析」),請將它們的監視圖表一併納入。

如果您有用戶端行動應用程式,請使用 App Center。 請在分析中建立查詢以顯示事件計數,並將它們釘選到儀表板。

範例

此範例 監視具有 Web 角色和兩個背景工作角色的服務。

在 Azure 雲端服務中執行時發生的「找不到方法」例外狀況

您是否已針對 .NET LTS 組建? Azure 雲端服務角色不會自動支援較早的版本。 在每個角色上安裝 .NET LTS,再執行應用程式。

下一步