Uso dell'analisi con Application InsightsUsage analysis with Application Insights

Quali sono le funzionalità dell'app Web o dell'app per dispositivi mobili più comuni?Which features of your web or mobile app are most popular? Gli utenti raggiungono i propri obiettivi con l'app?Do your users achieve their goals with your app? Escono in particolari punti e riaccedono in un secondo momento?Do they drop out at particular points, and do they return later? Application Insights di Azure consente di ottenere importanti informazioni approfondite sull'uso dell'app da parte degli utenti.Azure Application Insights helps you gain powerful insights into how people use your app. Ogni volta che si aggiorna l'app, è possibile valutarne il funzionamento per gli utenti.Every time you update your app, you can assess how well it works for users. Con queste informazioni è possibile prendere decisioni in base ai dati sui cicli di sviluppo successivi.With this knowledge, you can make data driven decisions about your next development cycles.

Inviare dati di telemetria dall'appSend telemetry from your app

La migliore esperienza viene ottenuta tramite l'installazione di Application Insights nel codice server dell'app e nelle pagine Web.The best experience is obtained by installing Application Insights both in your app server code, and in your web pages. I componenti client e server dell'app inviano dati di telemetria al portale di Azure per l'analisi.The client and server components of your app send telemetry back to the Azure portal for analysis.

  1. Codice server: installare il modulo appropriato per l'app ASP.NET, Azure, Java, Node.js o per altre app.Server code: Install the appropriate module for your ASP.NET, Azure, Java, Node.js, or other app.

  2. Codice della pagina Web: Aggiungere lo script seguente alla pagina Web prima del </head>di chiusura.Web page code: Add the following script to your web page before the closing </head>. Sostituire la chiave di strumentazione con il valore appropriato della risorsa di Application Insights:Replace instrumentation key with the appropriate value for your Application Insights resource:

    <script type="text/javascript">
    var sdkInstance="appInsightsSDK";window[sdkInstance]="appInsights";var aiName=window[sdkInstance],aisdk=window[aiName]||function(e){function n(e){t[e]=function(){var n=arguments;t.queue.push(function(){t[e].apply(t,n)})}}var t={config:e};t.initialize=!0;var i=document,a=window;setTimeout(function(){var n=i.createElement("script");n.src=e.url||"https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",i.getElementsByTagName("script")[0].parentNode.appendChild(n)});try{t.cookie=i.cookie}catch(e){}t.queue=[],t.version=2;for(var r=["Event","PageView","Exception","Trace","DependencyData","Metric","PageViewPerformance"];r.length;)n("track"+r.pop());n("startTrackPage"),n("stopTrackPage");var s="Track"+r[0];if(n("start"+s),n("stop"+s),n("setAuthenticatedUserContext"),n("clearAuthenticatedUserContext"),n("flush"),!(!0===e.disableExceptionTracking||e.extensionConfig&&e.extensionConfig.ApplicationInsightsAnalytics&&!0===e.extensionConfig.ApplicationInsightsAnalytics.disableExceptionTracking)){n("_"+(r="onerror"));var o=a[r];a[r]=function(e,n,i,a,s){var c=o&&o(e,n,i,a,s);return!0!==c&&t["_"+r]({message:e,url:n,lineNumber:i,columnNumber:a,error:s}),c},e.autoExceptionInstrumented=!0}return t}(
    {
      instrumentationKey:"INSTRUMENTATION_KEY"
    }
    );window[aiName]=aisdk,aisdk.queue&&0===aisdk.queue.length&&aisdk.trackPageView({});
    </script>
    

    Per informazioni sulle configurazioni più avanzate per il monitoraggio dei siti Web, vedere l' articolo di riferimento per JavaScript SDK.To learn more advanced configurations for monitoring websites, check out the JavaScript SDK reference article.

  3. Codice dell'app per dispositivi mobili: usare App Center SDK per raccogliere gli eventi dall'app, quindi inviare copie di questi eventi ad Application Insights per l'analisi seguendo le istruzioni in questa guida.Mobile app code: Use the App Center SDK to collect events from your app, then send copies of these events to Application Insights for analysis by following this guide.

  4. Ottenere dati di telemetria: eseguire il progetto in modalità di debug per alcuni minuti e quindi cercare i risultati nel pannello Panoramica in Application Insights.Get telemetry: Run your project in debug mode for a few minutes, and then look for results in the Overview blade in Application Insights.

    Pubblicare l'app per monitorare le prestazioni dell'app ed esaminare le operazioni eseguite dagli utenti con l'app.Publish your app to monitor your app's performance and find out what your users are doing with your app.

Includere l'ID di utente e sessione nei dati di telemetriaInclude user and session ID in your telemetry

Per tenere traccia degli utenti nel tempo, Application Insights richiede un modo per identificarli.To track users over time, Application Insights requires a way to identify them. Lo strumento Eventi è l'unico strumento relativo all'uso per cui non è richiesto un ID utente o un ID di sessione.The Events tool is the only Usage tool that does not require a user ID or a session ID.

Iniziare a inviare gli ID utente e sessione tramite questa procedura.Start sending user and session IDs using this process.

Esplorare le statistiche e i dati demografici di usoExplore usage demographics and statistics

Scoprire quando le persone usano l'app, a quali pagine sono più interessati, dove si trovano, quali browser e sistemi operativi usano.Find out when people use your app, what pages they're most interested in, where your users are located, what browsers and operating systems they use.

I report sugli utenti e le sessioni filtrano i dati in base alle pagine o agli eventi personalizzati e li segmentano in base a proprietà quali posizione, ambiente e pagina.The Users and Sessions reports filter your data by pages or custom events, and segment them by properties such as location, environment, and page. È anche possibile aggiungere filtri personalizzati.You can also add your own filters.

Utenti

Informazioni approfondite sui modelli di segnalazione corretti nel set di dati.Insights on the right point out interesting patterns in the set of data.

  • Il report sugli utenti conta il numero di utenti univoci che accedono alle pagine nei periodi di tempo scelti.The Users report counts the numbers of unique users that access your pages within your chosen time periods. Per le app Web gli utenti vengono conteggiati usando i cookie.For web apps, users are counted by using cookies. Se un utente accede al sito con browser o computer client diversi o cancella i cookie, verrà conteggiato più volte.If someone accesses your site with different browsers or client machines, or clears their cookies, then they will be counted more than once.
  • Il report sulle sessioni conteggia il numero di sessioni dell'utente che accedono al sito.The Sessions report counts the number of user sessions that access your site. Una sessione è un periodo di attività dell'utente, che termina quando si verifica un periodo di inattività di più di mezz'ora.A session is a period of activity by a user, terminated by a period of inactivity of more than half an hour.

Altre informazioni sugli strumenti di Utenti, Sessioni ed EventiMore about the Users, Sessions, and Events tools

Conservazione: numero di utenti che ritornanoRetention - how many users come back?

La conservazione consente di comprendere la frequenza con cui gli utenti tornano a usare l'app, in base alle coorti di utenti che hanno eseguito un'azione aziendale in un determinato intervallo di tempo.Retention helps you understand how often your users return to use their app, based on cohorts of users that performed some business action during a certain time bucket. 

  • Comprendere le funzionalità specifiche per cui alcuni utenti ritornano di più rispetto ad altriUnderstand what specific features cause users to come back more than others
  • Fare ipotesi in base a dati utente realiForm hypotheses based on real user data
  • Determinare se la conservazione è un problema per il prodottoDetermine whether retention is a problem in your product

Conservazione

I controlli di conservazione nella parte superiore consentono di definire l'intervallo di tempo e gli eventi specifici per il calcolo della conservazione.The retention controls on top allow you to define specific events and time range to calculate retention. Il grafico nella parte centrale offre una rappresentazione visiva della percentuale della conservazione generale in base all'intervallo di tempo specificato.The graph in the middle gives a visual representation of the overall retention percentage by the time range specified. Il grafico nella parte inferiore rappresenta la singola conservazione in un determinato periodo di tempo.The graph on the bottom represents individual retention in a given time period. Questo livello di dettagli consente di capire le operazioni eseguite dagli utenti e le possibili motivazioni per cui un utente sceglie di ritornare con una granularità più dettagliata.This level of detail allows you to understand what your users are doing and what might affect returning users on a more detailed granularity.

Altre informazioni sullo strumento di conservazioneMore about the Retention tool

Eventi aziendali personalizzatiCustom business events

Per ottenere una descrizione chiara delle operazioni che gli utenti eseguono con l'app, è utile inserire righe di codice per registrare eventi personalizzati.To get a clear understanding of what users do with your app, it's useful to insert lines of code to log custom events. Questi eventi possono tenere traccia di qualsiasi operazione, da azioni dell'utente dettagliate, ad esempio fare clic su pulsanti specifici, agli eventi aziendali più importanti, ad esempio effettuare un acquisto o vincere a un gioco.These events can track anything from detailed user actions such as clicking specific buttons, to more significant business events such as making a purchase or winning a game.

Sebbene in alcuni casi, le visualizzazioni della pagina possano rappresentare eventi utili, questo non è vero in generale.Although in some cases, page views can represent useful events, it isn't true in general. Un utente può aprire la pagina di un prodotto senza acquistarlo.A user can open a product page without buying the product.

Con eventi aziendali specifici, è possibile rappresentare in un grafico lo stato di avanzamento degli utenti all'interno del sito.With specific business events, you can chart your users' progress through your site. È possibile scoprirne le preferenze per le diverse opzioni e i punti in cui abbandonano il sito o hanno difficoltà.You can find out their preferences for different options, and where they drop out or have difficulties. Con queste informazioni si possano prendere decisioni consapevoli sulle priorità nel backlog di sviluppo.With this knowledge, you can make informed decisions about the priorities in your development backlog.

Gli eventi possono essere registrati dal lato client dell'app:Events can be logged from the client side of the app:


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

O dal lato server:Or from the server side:

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

È possibile collegare i valori delle proprietà a questi eventi, in modo da poter filtrare o suddividere gli eventi quando li si ispeziona nel portale.You can attach property values to these events, so that you can filter or split the events when you inspect them in the portal. A ogni evento viene anche associato un set standard di proprietà, ad esempio un'ID utente anonimo, che consente di analizzare la sequenza delle attività di un singolo utente.In addition, a standard set of properties is attached to each event, such as anonymous user ID, which allows you to trace the sequence of activities of an individual user.

Altre informazioni sugli eventi personalizzati e le proprietà.Learn more about custom events and properties.

Analisi approfondita degli eventiSlice and dice events

Negli strumenti Utenti, Sessioni ed Eventi, è possibile eseguire un'analisi approfondita degli eventi personalizzati per utente, nome dell'evento e proprietà.In the Users, Sessions, and Events tools, you can slice and dice custom events by user, event name, and properties. UtentiUsers

Progettare i dati di telemetria con l'appDesign the telemetry with the app

Quando si progettano le funzionalità dell'app, prendere in considerazione le modalità in cui si desidera misurarne il successo con gli utenti.When you are designing each feature of your app, consider how you are going to measure its success with your users. Decidere quali eventi aziendali è necessario registrare e codificare il monitoraggio delle chiamate per questi eventi nell'app sin dall'inizio.Decide what business events you need to record, and code the tracking calls for those events into your app from the start.

Test A | BA | B Testing

Se non si sa quale variante di una funzionalità sarà più efficace, rilasciarle entrambe, rendendo ognuna accessibile a utenti diversi.If you don't know which variant of a feature will be more successful, release both of them, making each accessible to different users. Valutare la riuscita di ognuna e quindi passare a una versione unificata.Measure the success of each, and then move to a unified version.

Per questa tecnica è possibile collegare valori per le proprietà differenti per tutti i dati di telemetria inviati da ogni versione dell'app.For this technique, you attach distinct property values to all the telemetry that is sent by each version of your app. A questo scopo, definire le proprietà nel TelemetryContext attivo.You can do that by defining properties in the active TelemetryContext. Queste proprietà predefinite vengono aggiunte a ogni messaggio di telemetria inviato dall'applicazione, non solo ai messaggi personalizzati, ma anche ai dati di telemetria standard.These default properties are added to every telemetry message that the application sends - not just your custom messages, but the standard telemetry as well.

Nel portale Application Insights è possibile filtrare e dividere i dati sui valori delle proprietà, in modo da confrontare versioni diverse.In the Application Insights portal, filter and split your data on the property values, so as to compare the different versions.

A tale scopo, configurare un inizializzatore di telemetria:To do this, set up a telemetry initializer:

App ASP.NETASP.NET apps

    // Telemetry initializer class
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize (ITelemetry telemetry)
        {
            telemetry.Properties["AppVersion"] = "v2.1";
        }
    }

Nell'inizializzatore dell'app Web, ad esempio Global.asax.cs:In the web app initializer such as Global.asax.cs:


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

App ASP.NET CoreASP.NET Core apps

Nota

L'aggiunta di un inizializzatore utilizzando ApplicationInsights.config o l'utilizzo di TelemetryConfiguration.Active non è valida per ASP.NET Core applicazioni.Adding initializer using ApplicationInsights.config or using TelemetryConfiguration.Active is not valid for ASP.NET Core applications.

Per ASP.NET Core applicazioni, l'aggiunta di una nuova TelemetryInitializer viene eseguita aggiungendola al contenitore di inserimento delle dipendenze, come illustrato di seguito.For ASP.NET Core applications, adding a new TelemetryInitializer is done by adding it to the Dependency Injection container, as shown below. Questa operazione viene eseguita nel metodo ConfigureServices della classe Startup.cs.This is done in ConfigureServices method of your Startup.cs class.

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

Tutti i nuovi TelemetryClients aggiungono automaticamente il valore di proprietà specificato.All new TelemetryClients automatically add the property value you specify. I singoli eventi di telemetria possono eseguire la sostituzione dei valori predefiniti.Individual telemetry events can override the default values.

Passaggi successiviNext steps