Gebruiksanalyse met Application Insights

Welke functies van uw web- of mobiele app zijn het populairst? Bereiken uw gebruikers hun doelen met uw app? Stoppen ze op bepaalde punten en komen ze later terug? Met Insights kunt u krachtige inzichten krijgen in de manier waarop mensen uw app gebruiken. Telkens wanneer u uw app bijwerkt, kunt u beoordelen hoe goed deze werkt voor gebruikers. Met deze kennis kunt u gegevensgestuurde beslissingen nemen over uw volgende ontwikkelingscycli.

Telemetrie verzenden vanuit uw app

De beste ervaring wordt verkregen door Application Insights installeren in de code van uw app-server en op uw webpagina's. De client- en serveronderdelen van uw app verzenden telemetrie terug naar de Azure Portal voor analyse.

  1. Servercode: Installeer de juiste module voor uw ASP.NET, Azure, Java, Node.jsof een andere app.

  2. Webpaginacode: Voeg het volgende script toe aan uw webpagina vóór de afsluitende </head> . Vervang de instrumentatiesleutel door de juiste waarde voor uw Application Insights resource:

    Het huidige fragment (hieronder vermeld) is versie 5, de versie wordt in het fragment gecodeerd als sv:"#" en de huidige versie is ook beschikbaar op 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>
    

    Raadpleeg het naslagartikel over de JavaScript-SDKvoor meer informatie over geavanceerde configuraties voor het bewaken van websites.

  3. Code voor mobiele apps: Gebruik de App Center-SDK om gebeurtenissen van uw app te verzamelen en verzend kopieën van deze gebeurtenissen naar Application Insights voor analyse door deze handleiding te volgen.

  4. Telemetrie op halen: Voer uw project enkele minuten uit in de foutopsporingsmodus en zoek naar resultaten in het deelvenster Overzicht in Application Insights.

    Publiceer uw app om de prestaties van uw app te bewaken en erachter te komen wat uw gebruikers met uw app doen.

Demografische gegevens en statistieken over gebruik verkennen

Ontdek wanneer mensen uw app gebruiken, in welke pagina's ze het meest geïnteresseerd zijn, waar uw gebruikers zich bevinden, welke browsers en besturingssystemen ze gebruiken.

De rapporten Gebruikers en sessies filteren uw gegevens op pagina's of aangepaste gebeurtenissen en segmenteren deze op eigenschappen zoals locatie, omgeving en pagina. U kunt ook uw eigen filters toevoegen.

Schermopname toont het tabblad Gebruikers met een staafdiagram.

Insights aan de rechterkant interessante patronen in de set gegevens aan te geven.

  • Het rapport Gebruikers telt het aantal unieke gebruikers dat toegang heeft tot uw pagina's binnen de door u gekozen tijdsperioden. Voor web-apps worden gebruikers geteld met behulp van cookies. Als iemand toegang heeft tot uw site met verschillende browsers of clientmachines, of als de cookies worden geweken, worden ze meer dan één keer geteld.
  • Het rapport Sessies telt het aantal gebruikerssessies dat toegang heeft tot uw site. Een sessie is een periode van activiteit door een gebruiker, beëindigd met een periode van inactiviteit van meer dan een half uur.

Meer informatie over de hulpprogramma's Gebruikers, Sessies en Gebeurtenissen

Retentie: hoeveel gebruikers komen terug?

Retentie helpt u te begrijpen hoe vaak uw gebruikers terugkeren om hun app te gebruiken, op basis van cohorten van gebruikers die een bepaalde zakelijke actie hebben uitgevoerd tijdens een bepaalde periode.

  • Begrijpen welke specifieke functies ervoor zorgen dat gebruikers meer terug komen dan andere
  • Hypothesen maken op basis van echte gebruikersgegevens
  • Bepalen of retentie een probleem is in uw product

Schermopname toont de werkmap Retentie waarin informatie wordt weergegeven over hoe vaak gebruikers terugkeren om hun app te gebruiken.

Met de besturingselementen voor retentie bovenaan kunt u specifieke gebeurtenissen en een tijdsbereik definiëren om de retentie te berekenen. De grafiek in het midden geeft een visuele weergave van het algehele bewaarpercentage op het opgegeven tijdsbereik. De grafiek onderaan vertegenwoordigt de afzonderlijke retentie in een bepaalde periode. Met dit detailniveau kunt u begrijpen wat uw gebruikers doen en wat van invloed kan zijn op terugkerende gebruikers op een gedetailleerdere granulariteit.

Meer informatie over de werkmap Voor retentie

Aangepaste bedrijfsgebeurtenissen

Als u een duidelijk inzicht wilt krijgen in wat gebruikers met uw app doen, is het handig om regels code in te voegen om aangepaste gebeurtenissen te loggen. Deze gebeurtenissen kunnen van alles bijhouden, van gedetailleerde gebruikersacties zoals klikken op specifieke knoppen tot belangrijke zakelijke gebeurtenissen, zoals het doen van een aankoop of het winnen van een spel.

U kunt ook de click analytics auto-collection plugin gebruiken om aangepaste gebeurtenissen te verzamelen.

Hoewel paginaweergaven in sommige gevallen nuttige gebeurtenissen kunnen vertegenwoordigen, is dit in het algemeen niet het geval. Een gebruiker kan een productpagina openen zonder het product te kopen.

Met specifieke zakelijke gebeurtenissen kunt u de voortgang van uw gebruikers via uw site in kaart brengen. Ontdek hun voorkeuren voor verschillende opties en waar ze afhaken of problemen ondervinden. Met deze kennis kunt u weloverwogen beslissingen nemen over de prioriteiten in uw ontwikkelingsachterstand.

Gebeurtenissen kunnen worden geregistreerd vanaf de clientzijde van de app:

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

Of vanaf de serverzijde:

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

U kunt eigenschapswaarden aan deze gebeurtenissen koppelen, zodat u de gebeurtenissen kunt filteren of splitsen wanneer u ze inspecteert in de portal. Er is ook een standaardset eigenschappen gekoppeld aan elke gebeurtenis, zoals anonieme gebruikers-id, waarmee u de volgorde van activiteiten van een afzonderlijke gebruiker kunt traceren.

Meer informatie over aangepaste gebeurtenissen en eigenschappen.

Gebeurtenissen segmenten en dobbelstenen

In de hulpprogramma's Gebruikers, Sessies en Gebeurtenissen kunt u aangepaste gebeurtenissen op gebruiker, gebeurtenisnaam en eigenschappen segmenteren en in blokjes zetten.

Schermopname van het tabblad Gebeurtenissen gefilterd op AnalyticsItemsOperation en gesplitst op AppID.

De telemetrie ontwerpen met de app

Wanneer u elke functie van uw app ontwerpt, kunt u overwegen hoe u het succes van de app gaat meten met uw gebruikers. Bepaal welke zakelijke gebeurtenissen u wilt opnemen en codeer de traceringsoproepen voor deze gebeurtenissen vanaf het begin in uw app.

Een | B testen

Als u niet weet welke variant van een functie succesvoller zal zijn, brengt u beide uit, zodat ze toegankelijk zijn voor verschillende gebruikers. Meet het succes van elke versie en ga vervolgens naar een uniforme versie.

Voor deze techniek koppelt u afzonderlijke eigenschapswaarden aan alle telemetrie die door elke versie van uw app wordt verzonden. U kunt dit doen door eigenschappen te definiëren in de actieve TelemetryContext. Deze standaardeigenschappen worden toegevoegd aan elk telemetriebericht dat de toepassing verzendt, niet alleen uw aangepaste berichten, maar ook de standaardtelemetrie.

Filter en splits in Insights Application Insights uw gegevens op de eigenschapswaarden, zodat u de verschillende versies kunt vergelijken.

Hiervoor stelt u een telemetrie-initialisatie in:

ASP.NET-apps

    // 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";
                }
            }
    }

In de initialisatie van de web-app, zoals Global.asax.cs:


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

ASP.NET Core-apps

Notitie

Het toevoegen van initialisatie ApplicationInsights.config met of met is niet geldig voor ASP.NET Core TelemetryConfiguration.Active toepassingen.

Voor ASP.NET Core toepassingen wordt het toevoegen van een nieuwe gedaan door deze toe te voegen aan de TelemetryInitializer container Afhankelijkheidsinjectie, zoals hieronder wordt weergegeven. Dit wordt gedaan in ConfigureServices de methode van uw Startup.cs klasse.

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

Alle nieuwe TelemetryClients voegen automatisch de eigenschapswaarde toe die u opgeeft. Afzonderlijke telemetriegebeurtenissen kunnen de standaardwaarden overschrijven.

Volgende stappen