Användningsanalys med Application Insights

Vilka funktioner i din webb- eller mobilapp är mest populära? Uppnår användarna sina mål med din app? Hoppar de av vid specifika punkter och kommer de tillbaka senare? Program Insights hjälper dig att få kraftfulla insikter om hur personer använder din app. Varje gång du uppdaterar din app kan du utvärdera hur bra den fungerar för användarna. Med den här kunskapen kan du fatta datadrivna beslut om dina nästa utvecklingscykler.

Skicka telemetri från din app

Du får bästa möjliga upplevelse genom att installera Insights både i din appserverkod och på dina webbsidor. Klient- och serverkomponenterna i din app skickar telemetri tillbaka till Azure Portal för analys.

  1. Serverkod: Installera lämplig modul för din ASP.NET, Azure, Java, Node.jseller någon annan app.

  2. Webbsidekod: Lägg till följande skript på webbsidan innan du stänger </head> . Ersätt instrumenteringsnyckeln med lämpligt värde för din Application Insights resurs:

    Det aktuella kodfragmentet (anges nedan) är version "5", versionen är kodad i kodfragmentet som sv:"#" och den aktuella versionen är också tillgänglig på GitHub.

    <script type="text/javascript">
    !function(T,l,y){var S=T.location,k="script",D="instrumentationKey",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u+"/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_"+c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_"+c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{
    src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
    // name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied
    // ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout,
    // useXhr: 1, // Use XHR instead of fetch to report failures (if available),
    crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
    // onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DO NOT ADD anything to the sdk.queue -- As they won't get called)
    cfg: { // Application Insights Configuration
      instrumentationKey:"INSTRUMENTATION_KEY"
    }});
    </script>
    

    Mer avancerade konfigurationer för övervakning av webbplatser finns i JavaScript SDK-referensartikeln.

  3. Mobilappkod: Använd sdk App Center för att samla in händelser från din app och skicka sedan kopior av dessa händelser till Application Insights för analys genom att följa den här guiden.

  4. Hämta telemetri: Kör projektet i felsökningsläge i några minuter och leta sedan efter resultat i fönstret Översikt i Program Insights.

    Publicera din app för att övervaka appens prestanda och ta reda på vad användarna gör med din app.

Utforska demografi och statistik för användning

Ta reda på när användarna använder din app, vilka sidor de är mest intresserade av, var användarna finns, vilka webbläsare och operativsystem de använder.

Rapporterna användare och sessioner filtrerar dina data efter sidor eller anpassade händelser och segmenterar dem efter egenskaper som plats, miljö och sida. Du kan också lägga till egna filter.

Skärmbild som visar fliken Användare med ett stapeldiagram.

Insights till höger pekar på intressanta mönster i datauppsättningen.

  • Rapporten Användare räknar antalet unika användare som har åtkomst till dina sidor inom de tidsperioder du valt. För webbappar räknas användare med hjälp av cookies. Om någon använder din webbplats med olika webbläsare eller klientdatorer, eller rensar sina cookies, räknas de mer än en gång.
  • Rapporten Sessioner räknar antalet användarsessioner som har åtkomst till webbplatsen. En session är en aktivitetsperiod av en användare som avslutas med en inaktivitetsperiod på mer än en halvtimme.

Mer om verktygen Användare, Sessioner och Händelser

Kvarhållning – hur många användare kommer tillbaka?

Kvarhållning hjälper dig att förstå hur ofta användarna återgår till att använda sin app, baserat på kohorter av användare som utförde vissa affärsåtgärder under en viss tids bucket.

  • Förstå vilka specifika funktioner som gör att användare kommer tillbaka mer än andra
  • Formhypesser baserade på verkliga användardata
  • Ta reda på om kvarhållning är ett problem i produkten

Skärmbild som visar arbetsboken Kvarhållning som visar information om hur ofta användarna återgår till att använda sin app.

Med kvarhållningskontrollerna längst upp kan du definiera specifika händelser och tidsperioder för att beräkna kvarhållningen. Diagrammet i mitten ger en visuell representation av den totala kvarhållningsprocenten efter det angivna tidsperioden. Diagrammet längst ned representerar individuell kvarhållning under en viss tidsperiod. Med den här detaljnivån kan du förstå vad användarna gör och vad som kan påverka återkommande användare på en mer detaljerad detaljnivå.

Mer om arbetsboken Kvarhållning

Anpassade affärshändelser

För att få en tydlig förståelse för vad användarna gör med din app är det praktiskt att infoga rader med kod för att logga anpassade händelser. Dessa händelser kan spåra allt från detaljerade användaråtgärder, till exempel att klicka på specifika knappar, till mer betydande affärshändelser som att göra ett köp eller vinna ett spel.

Du kan också använda plugin-programmet Klicka på Analys automatisk insamling för att samla in anpassade händelser.

Även om sidvisningar i vissa fall kan representera användbara händelser är det inte sant i allmänhet. En användare kan öppna en produktsida utan att köpa produkten.

Med specifika affärshändelser kan du diagram över användarnas framsteg genom webbplatsen. Ta reda på deras preferenser för olika alternativ och var de hoppar av eller har problem. Med den här kunskapen kan du fatta välgrundade beslut om prioriteringarna i din lista för utveckling.

Händelser kan loggas från klientsidan av appen:

    appInsights.trackEvent("ExpandDetailTab", {DetailTab: tabName});

Eller från serversidan:

    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");

Du kan koppla egenskapsvärden till dessa händelser så att du kan filtrera eller dela upp händelserna när du inspekterar dem i portalen. En standarduppsättning egenskaper bifogas också till varje händelse, till exempel anonymt användar-ID, vilket gör att du kan spåra sekvensen med aktiviteter för en enskild användare.

Läs mer om anpassade händelser och egenskaper.

Segment- och tärningshändelser

I verktygen Användare, Sessioner och Händelser kan du dela upp och dela in anpassade händelser efter användare, händelsenamn och egenskaper.

Skärmbild som visar fliken Händelser filtrerad efter AnalyticsItemsOperation och uppdelad efter AppID.

Utforma telemetrin med appen

När du utformar varje funktion i din app bör du tänka på hur du kommer att mäta dess framgång med dina användare. Bestäm vilka affärshändelser du behöver registrera och koda spårningssamtalen för dessa händelser i din app från början.

En | B-testning

Om du inte vet vilken variant av en funktion som kommer att lyckas kan du släppa båda, vilket gör dem tillgängliga för olika användare. Mät framgången för var och en och gå sedan över till en enhetlig version.

För den här tekniken kopplar du distinkta egenskapsvärden till all telemetri som skickas av varje version av din app. Du kan göra det genom att definiera egenskaper i den aktiva TelemetryContext. Dessa standardegenskaper läggs till i varje telemetrimeddelande som programmet skickar – inte bara dina anpassade meddelanden, utan även standardtelemetri.

I programportalen Insights du och delar upp dina data på egenskapsvärdena för att jämföra de olika versionerna.

Det gör du genom att konfigurera en telemetriinitierare:

ASP.NET-appar

    // Telemetry initializer class
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry item)
            {
                var itemProperties = item as ISupportProperties;
                if (itemProperties != null && !itemProperties.Properties.ContainsKey("AppVersion"))
                {
                    itemProperties.Properties["AppVersion"] = "v2.1";
                }
            }
    }

I webbappens initierare, till exempel Global.asax.cs:


    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers
         .Add(new MyTelemetryInitializer());
    }

ASP.NET Core-appar

Anteckning

Att lägga till ApplicationInsights.config initierare med eller TelemetryConfiguration.Active använda är inte giltigt för ASP.NET Core program.

För ASP.NET Core program görs att lägga till en ny TelemetryInitializer genom att lägga till den i containern Dependency Injection enligt nedan. Detta görs i ConfigureServices metoden för din Startup.cs -klass.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Alla nya TelemetryClients lägger automatiskt till det egenskapsvärde som du anger. Enskilda telemetrihändelser kan åsidosätta standardvärdena.

Nästa steg