Analýzy používání pomocí nástroje Application Insights

Které funkce webové nebo mobilní aplikace jsou nejoblíbenější? Dosáhli uživatelé svých cílů s vaší aplikací? Vypadnou na konkrétní body a vrátí se později? Aplikační Přehledy vám pomůže získat výkonné přehledy o tom, jak uživatelé vaši aplikaci používají. Při každé aktualizaci aplikace můžete posoudit, jak dobře funguje pro uživatele. S těmito znalostmi můžete rozhodovat o dalších vývojových cyklech na základě dat.

Odesílání telemetrie z aplikace

Nejlepší prostředí získáte tak, že nainstalujete aplikační Přehledy jak do kódu aplikačního serveru, tak na webové stránky. Komponenty klienta a serveru vaší aplikace odesílají telemetrii zpět do Azure Portal k analýze.

  1. Kód serveru: Nainstalujte příslušný modul pro ASP.NET, Azure, Javu, Node.jsnebo jinou aplikaci.

  2. Kód webové stránky: Před uzavřením </head>přidejte následující skript na webovou stránku . Nahraďte instrumentační klíč odpovídající hodnotou pro prostředek Přehledy vaší aplikace:

    Aktuální fragment kódu (uvedený níže) je verze 5, verze se zakóduje do fragmentu kódu jako sv:"#" a aktuální verze je dostupná také v 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>
    

Poznámka

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu této funkce. Přechod na připojovací řetězce za účelem využití nových funkcí

Další pokročilé konfigurace pro monitorování webů najdete v referenčním článku k sadě JavaScript SDK.

  1. Kód mobilní aplikace: Pomocí sady App Center SDK můžete shromažďovat události z vaší aplikace a pak odesílat kopie těchto událostí do aplikace Přehledy k analýze pomocí této příručky.

  2. Získání telemetrie: Spusťte projekt v režimu ladění několik minut a pak vyhledejte výsledky v podokně Přehled v Přehledy aplikace.

    Publikujte aplikaci pro monitorování výkonu aplikace a zjistěte, co s vaší aplikací dělají vaši uživatelé.

Prozkoumání demografických údajů o využití a statistikách

Zjistěte, kdy uživatelé používají vaši aplikaci, jaké stránky mají největší zájem, kde se vaši uživatelé nacházejí, jaké prohlížeče a operační systémy používají.

Sestavy Uživatelé a relace filtrují data podle stránek nebo vlastních událostí a segmentují je podle vlastností, jako je umístění, prostředí a stránka. Můžete také přidat vlastní filtry.

Screen capture shows the Users tab with a bar chart.

Přehledy na pravé straně ukázat zajímavé vzory v sadě dat.

  • Sestava Uživatelé spočítá počet jedinečných uživatelů, kteří přistupují k vašim stránkám ve zvolených časových obdobích. U webových aplikací se uživatelé počítají pomocí souborů cookie. Pokud někdo přistupuje k vašemu webu s různými prohlížeči nebo klientskými počítači nebo vymaže soubory cookie, bude se počítat více než jednou.
  • Sestava Relace spočítá počet uživatelských relací, které přistupují k vašemu webu. Relace je období aktivity uživatelem ukončené obdobím nečinnosti delší než půl hodiny.

Další informace o nástrojích Uživatelé, Relace a Události

Uchování – kolik uživatelů se vrátí?

Uchovávání informací vám pomůže pochopit, jak často se uživatelé vracejí k používání aplikace na základě kohort uživatelů, kteří provedli nějakou obchodní akci během určitého časového intervalu. 

  • Vysvětlení konkrétních funkcí, které způsobují, že se uživatelé vrátí více než ostatní
  • Vytvoření hypotéz založených na skutečných uživatelských datech
  • Určení, jestli je uchovávání informací problém ve vašem produktu

Screen capture shows the Retention workbook which displays information about how often users return to use their app.

Ovládací prvky uchovávání informací nahoře umožňují definovat konkrétní události a časový rozsah pro výpočet uchovávání informací. Graf uprostřed poskytuje vizuální znázornění celkového procenta uchovávání podle zadaného časového rozsahu. Graf dole představuje individuální uchování v daném časovém období. Tato úroveň podrobností umožňuje pochopit, co vaši uživatelé dělají a co by mohlo mít vliv na vrácení uživatelů s podrobnější členitostí.

Další informace o sešitu uchovávání informací

Vlastní obchodní události

Abyste pochopili, co uživatelé s vaší aplikací dělají, je užitečné vložit řádky kódu pro protokolování vlastních událostí. Tyto události můžou sledovat cokoli od podrobných uživatelských akcí, jako je kliknutí na konkrétní tlačítka, až po významné obchodní události, jako je nákup nebo výhra hry.

Ke shromažďování vlastních událostí můžete použít také modul plug-in automatické kolekce Click Analytics .

I když v některých případech můžou zobrazení stránek představovat užitečné události, obecně to neplatí. Uživatel může otevřít stránku produktu bez nutnosti koupě produktu.

U konkrétních obchodních událostí můžete zobrazit průběh vašich uživatelů prostřednictvím webu. Zjistěte jejich preference pro různé možnosti a tam, kde vypadnou nebo mají potíže. S těmito znalostmi můžete provádět informovaná rozhodnutí o prioritách v backlogu vývoje.

Události je možné protokolovat z klientské strany aplikace:

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

Nebo ze strany serveru:

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

K těmto událostem můžete připojit hodnoty vlastností, abyste mohli události filtrovat nebo rozdělit při jejich kontrole na portálu. Ke každé události, jako je například anonymní ID uživatele, je také připojena standardní sada vlastností, která umožňuje sledovat posloupnost aktivit jednotlivých uživatelů.

Přečtěte si další informace o vlastních událostech a vlastnostech.

Události průřezu a kostky

V nástrojích Uživatelé, Relace a Události můžete rozdělit a rozdělit vlastní události podle uživatele, názvu události a vlastností.

Screen capture shows the Events tab filtered by AnalyticsItemsOperation and split by AppID.

Návrh telemetrie pomocí aplikace

Při navrhování jednotlivých funkcí aplikace zvažte, jak budete měřit její úspěch s uživateli. Rozhodněte se, jaké obchodní události potřebujete zaznamenat, a naprogramujte volání sledování těchto událostí do vaší aplikace od začátku.

| B Testování

Pokud nevíte, která varianta funkce bude úspěšnější, uvolněte obě z nich a zpřístupněte je různým uživatelům. Změřte úspěšnost každého z nich a pak přejděte na jednotnou verzi.

Pro tuto techniku připojíte jedinečné hodnoty vlastností ke všem telemetriím odesílaným jednotlivými verzemi vaší aplikace. Můžete to provést definováním vlastností v aktivním TelemetryContext. Tyto výchozí vlastnosti se přidají do každé zprávy telemetrie, kterou aplikace odesílá – nejen vaše vlastní zprávy, ale také standardní telemetrie.

Na portálu Přehledy aplikace vyfiltrujte a rozdělte data na hodnoty vlastností, abyste mohli porovnat různé verze.

Uděláte to tak, že nastavíte inicializátor telemetrie:

Aplikace v ASP.NET

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

Inicializátor webové aplikace, například Global.asax.cs:


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

Aplikace ASP.NET Core

Poznámka

Přidání inicializátoru pomocí ApplicationInsights.config nebo použití TelemetryConfiguration.Active není platné pro ASP.NET Core aplikace.

V případě ASP.NET Core aplikací je přidání nového TelemetryInitializer provedeno přidáním do kontejneru injektáže závislostí, jak je znázorněno níže. To se provádí v ConfigureServices metodě vaší Startup.cs třídy.

using Microsoft.ApplicationInsights.Extensibility;

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Další kroky