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 vissa tidpunkter, och återvänder de 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 den bästa upplevelsen genom att installera Application Insights både i appserverkoden och på dina webbsidor. Klient- och serverkomponenterna i din app skickar telemetri tillbaka till Azure Portal för analys.
Serverkod: Installera lämplig modul för din ASP.NET, Azure, Java,Node.jseller någon annan app.
- Vill du inte installera serverkod? Skapa bara en Azure Application Insights resurs.
Webbsidekod: Lägg till följande skript på webbsidan innan du stänger
</head>. Ersätt instrumentationsnyckeln med lämpligt värde för din Application Insights-resurs:Det aktuella kodfragmentet (nedan) är version "5", versionen kodas 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>
Anteckning
Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergång till anslutningssträngar för att dra nytta av nya funktioner.
Mer avancerade konfigurationer för övervakning av webbplatser finns i referensartikeln om JavaScript SDK.
Kod för mobilapp: Använd App Center SDK 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.
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 användningsdemografi och statistik
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 segmenteras efter egenskaper som plats, miljö och sida. Du kan också lägga till egna filter.
Insights till höger peka ut intressanta mönster i datauppsättningen.
- Rapporten Användare räknar antalet unika användare som har åtkomst till dina sidor inom de valda tidsperioderna. För webbappar räknas användarna med hjälp av cookies. Om någon ansluter till din webbplats med olika webbläsare eller klientdatorer, eller rensar sina cookies, räknas de mer än en gång.
- Sessionsrapporten räknar antalet användarsessioner som har åtkomst till din webbplats. En session är en aktivitetsperiod för en användare som avslutas av en period av inaktivitet 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 återvänder för att använda sin app, baserat på kohorter av användare som utförde vissa affärsåtgärder under en viss tidsbucket.
- Förstå vilka specifika funktioner som gör att användarna kommer tillbaka mer än andra
- Formulärhypoteser baserade på verkliga användardata
- Avgöra om kvarhållning är ett problem i din produkt
Med kvarhållningskontrollerna överst kan du definiera specifika händelser och tidsintervall för att beräkna kvarhållning. Diagrammet i mitten ger en visuell representation av den totala kvarhållningsprocenten enligt det angivna tidsintervallet. 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 med en mer detaljerad kornighet.
Mer om kvarhållningsarbetsboken
Anpassade affärshändelser
För att få en tydlig förståelse för vad användare gör med din app är det användbart att infoga kodrader för att logga anpassade händelser. Dessa händelser kan spåra allt från detaljerade användaråtgärder som att klicka på specifika knappar, till mer betydande affärshändelser, till exempel att göra ett köp eller vinna ett spel.
Du kan också använda plugin-programmet Click Analytics Auto-collection 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 kartlägga användarnas förlopp via din webbplats. 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 dina kvarvarande uppgifter för utveckling.
Händelser kan loggas från klientsidan av appen:
appInsights.trackEvent({name: "incrementCount"});
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 händelserna när du inspekterar dem i portalen. En standarduppsättning egenskaper är också kopplade till varje händelse, till exempel anonymt användar-ID, som gör att du kan spåra en enskild användares aktivitetssekvens.
Läs mer om anpassade händelser och egenskaper.
Segment- och tärningshändelser
I verktygen Användare, Sessioner och Händelser kan du segmentera och tärna anpassade händelser efter användare, händelsenamn och egenskaper.
Utforma telemetrin med appen
När du utformar varje funktion i din app bör du fundera på hur du ska mäta dess framgång med dina användare. Bestäm vilka affärshändelser du behöver registrera och koda spårningsanropen för dessa händelser till din app från början.
En | B-testning
Om du inte vet vilken variant av en funktion som kommer att bli mer framgångsrik släpper du båda, vilket gör var och en tillgänglig för olika användare. Mät framgångarna för var och en och gå sedan 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. Det kan du göra 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 standardtelemetrin.
I Application Insights-portalen filtrerar och delar du 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
{
// 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;
}
}
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 initializer med eller ApplicationInsights.config använda TelemetryConfiguration.Active är inte giltigt för ASP.NET Core program.
För ASP.NET Core program läggs en ny TelemetryInitializer till genom att lägga till den i containern dependency injection (Beroendeinmatning) enligt nedan. Detta görs i -metoden för ConfigureServices din Startup.cs klass.
using Microsoft.ApplicationInsights.Extensibility;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}


