使用 Application Insights 進行使用量分析

Web 或行動應用程式的哪些功能最受歡迎? 您的使用者是否利用您的應用程式達到其目標呢? 他們會在特定點退出,並在稍後返回嗎? Application Insights 可協助您深入了解使用者如何使用應用程式。 每次您更新應用程式時,都可以評估它適用於使用者的程度。 您可以透過了解這些來制定下一個開發週期的相關資料導向決策。

傳送來自您應用程式的遙測

若要獲得最佳體驗,請同時在您的應用程式伺服器程式碼和網頁中安裝 Application Insights。 您應用程式的用戶端和伺服器元件會將遙測資料傳送回 Azure 入口網站以供分析。

  1. 伺服器程式碼:為您的 ASP.NETAzureJavaNode.js其他應用程式安裝適當的模組。

  2. 網頁程式碼:使用 JavaScript SDK 從網頁收集資料。 請參閱開始使用 JavaScript SDK。。

    注意

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

    若要深入了解用於監視網站的進階組態,請參閱 JavaScript SDK 參考 \(部分機器翻譯\) 一文。

  3. 行動應用程式碼:使用 App Center SDK 從您的應用程式收集事件。 然後將這些事件的複本傳送至 Application Insights,遵循此指南進行分析。

  4. 取得遙測資料:在偵錯模式中執行您的專案幾分鐘。 然後在 Application Insights 的 [概觀] 窗格中尋找結果。

    發佈您的應用程式以監視應用程式的效能,並了解使用者如何利用您的應用程式。

探索使用量人口統計和統計資料

了解人們何時使用您的應用程式,以及他們最感興趣的頁面。 您也可以了解使用者所在的位置,以及他們所使用的瀏覽器和作業系統。

使用者工作階段報告會依頁面或自訂事件篩選您的資料。 報告會依位置、環境和頁面等屬性分割資料。 您也可以新增自己的篩選條件。

Screenshot that shows the Users tab with a bar chart.

右方情資指出資料集內的有趣模式。

  • 使用者報告會在您所選擇的時間週期內,計算存取您網頁的唯一使用者數目。 對於 Web 應用程式,會使用 Cookie 來計算使用者。 如果有人使用不同的瀏覽器或用戶端電腦來存取您的網站,或清除其 Cookie,系統就會將他們計算為多次。
  • 工作階段報告會以索引標籤顯示存取您網站的使用者工作階段數目。 工作階段代表使用者所起始活動的期間,並以超過半小時的閒置期間做為結束。

如需使用者、工作階段和事件工具的詳細資訊,請參閱 Application Insights 中的使用者、工作階段和事件分析

保留期:多少使用者回來?

保留期可根據同群使用者在特定時間貯體期間執行的某些商務動作,協助您了解使用者返回使用其應用程式的頻率。 您可以:

  • 了解相較於其他功能,哪些特定功能會讓使用者回來使用。
  • 根據實際使用者資料的表單假設。
  • 判斷保留期是否為您產品的問題。

Screenshot that shows the Retention workbook, which displays information about how often users return to use their app.

您可以使用頂端的保留期控制項,定義特定事件和時間範圍來計算保留期。 中間的圖表會依指定的時間範圍提供整體保留期百分比的視覺表示法。 底部圖表代表特定時段的個別保留期。 此詳細資料等級會使用更詳細的資料粒度,讓您了解使用者在做什麼,以及可能會影響舊有使用者的因素。

如需保留期活頁簿的詳細資訊,請參閱使用 Application Insights 對 Web 應用程式進行使用者保留期分析

自訂商務事件

若要了解應用程式中的使用者互動,請插入程式碼行來記錄自訂事件。 這些事件會追蹤各種使用者動作,例如按鈕選取或重要的商務事件,例如購物或遊戲勝利。

您也可以使用 Click Analytics 自動收集外掛程式來收集自訂事件。

在某些情況下,雖然頁面檢視可以代表有用的事件,但一般而言其並不正確。 使用者可以開啟產品網頁而無需購買產品。

您可以使用特定商務事件,透過網站將使用者的進度製作成圖表。 您可以找出他們對不同選項的偏好,以及它們退出或遇到困難之處。 您可以透過了解這些對開發待處理項目的優先順序做出明智決策。

事件可透過應用程式的用戶端來記錄下來:

      appInsights.trackEvent({name: "incrementCount"});

或者可以從伺服器端記錄事件:

    var tc = new Microsoft.ApplicationInsights.TelemetryClient();
    tc.TrackEvent("CreatedAccount", new Dictionary<string,string> {"AccountType":account.Type}, null);
    ...
    tc.TrackEvent("AddedItemToCart", new Dictionary<string,string> {"Item":item.Name}, null);
    ...
    tc.TrackEvent("CompletedPurchase");

您可以將屬性值附加至這些事件,當您在入口網站中檢查它們時,就可以將事件進行篩選或分割。 也會將一組標準的屬性附加至每個事件,例如匿名使用者識別碼,這可讓您追蹤個別使用者的活動順序。

深入了解自訂事件屬性

將事件進行交叉分析

在「使用者」、「工作階段」和「事件」工具中,您可以依使用者、事件名稱和屬性將自訂事件進行交叉分析。

Screenshot that shows the Events tab filtered by AnalyticsItemsOperation and split by AppID.

每當您進行任何使用體驗時,請選取 [開啟上次執行查詢] 圖示,以帶您回到基礎查詢。

Screenshot of the Application Insights Session pane in the Azure portal. The Open the last run query icon is highlighted.

然後,您可以修改基礎查詢,以取得您要尋找的資訊類型。

以下是有關網頁檢視的基礎查詢範例。 繼續並直接貼到查詢編輯器中,以進行測試。

// average pageView duration by name
let timeGrain=5m;
let dataset=pageViews
// additional filters can be applied here
| where timestamp > ago(1d)
| where client_Type == "Browser" ;
// calculate average pageView duration for all pageViews
dataset
| summarize avg(duration) by bin(timestamp, timeGrain)
| extend pageView='Overall'
// render result in a chart
| render timechart

使用應用程式來設計遙測

當您設計應用程式的每項功能時,請考慮要如何透過使用者來衡量其是否成功。 決定您需要記錄哪些商務事件,並從開頭將這些事件的追蹤呼叫編碼至應用程式。

A | B 測試

如果您不確定哪個功能變體較為成功,請釋放兩者,並讓不同的使用者存取每個變體。 測量每個變體是否成功,然後轉換至整合的版本。

在此技術中,您會將獨特的屬性值附加到每個應用程式版本所傳送的所有遙測資料。 您可以在作用中 TelemetryContext 中定義屬性來執行該動作。 這些預設屬性會包含在應用程式傳送的每則遙測訊息中。 其同時包含自訂訊息和標準遙測。

在 Application Insights 入口網站中,根據屬性值篩選並分割資料,以便您可以比較不同版本。

若要執行此步驟,請設定遙測初始設定式

    // Telemetry initializer class
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        // In this example, to differentiate versions, we use the value specified in the AssemblyInfo.cs
        // for ASP.NET apps, or in your project file (.csproj) for the ASP.NET Core apps. Make sure that
        // you set a different assembly version when you deploy your application for A/B testing.
        static readonly string _version = 
            System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
            
        public void Initialize(ITelemetry item)
        {
            item.Context.Component.Version = _version;
        }
    }

針對 ASP.NET Core 應用程式,將新的遙測初始設定式新增至 Program.cs 類別中的相依性插入服務集合。

using Microsoft.ApplicationInsights.Extensibility;

builder.Services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();

下一步