Analýzy používání pomocí nástroje Application Insights
Které funkce webu nebo mobilní aplikace jsou nejoblíbenější? Dosahují uživatelé svých cílů pomocí aplikace? Vypadou v konkrétních bodech a vrátí se později? Funkce Přehledy pomáhá získat efektivní přehled o tom, jak lidé vaši aplikaci používají. Pokaždé, když aplikaci aktualizujete, můžete vyhodnotit, jak dobře funguje pro uživatele. S tímto vědomím můžete rozhodovat o dalších vývojových cyklech na základě dat.
Odesílání telemetrických dat z aplikace
Nejlepších výsledků se dočtete tak, že Přehledy aplikačního serveru do kódu aplikačního serveru i na webové stránky. Komponenty klienta a serveru vaší aplikace odesílanou telemetrii zpět do Azure Portal k analýze.
Kód serveru: Nainstalujte odpovídající modul pro ASP.NET, Azure, Javu, Node.jsnebo jinou aplikaci.
- Nechcete instalovat kód serveru? Stačí vytvořit prostředek Azure Application Přehledy .
Kód webové stránky: Před zavření přidejte na webovou stránku následující
</head>skript. Nahraďte instrumentační klíč odpovídající hodnotou pro váš prostředek Přehledy aplikace:Aktuální fragment kódu (uvedený níže) je verze 5, verze je kódovaná ve fragmentu kódu jako sv:"#" a aktuální verze je dostupná také na 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>Další informace o pokročilejších konfiguracích pro monitorování webů najdete v referenčním článku o sadě JavaScript SDK.
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 služby Application Přehledy k analýze podle tohoto průvodce.
Získání telemetrie: Spusťte projekt v režimu ladění na několik minut a pak vyhledejte výsledky v podokně Přehled v okně Přehledy.
Publikujte aplikaci, abyste monitorovat výkon aplikace a zjistili, co vaši uživatelé s vaší aplikací dělají.
Prozkoumání demografických údajů a statistik využití
Zjistěte, kdy uživatelé vaši aplikaci používají, jaké stránky je nejvíce zajímají, kde se nachází vaši uživatelé, 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.
Přehledy na pravém místě zajímavé vzory v sadě dat.
- Sestava Uživatelé spočítá počet jedinečných uživatelů, kteří mají přístup 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 pomocí různých prohlížečů nebo klientských počítačů 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řistupuje k vašemu webu. Relace je období aktivity uživatele ukončené delší než půlhodinou nečinnosti.
Další informace o nástrojích Uživatelé, Relace a Události
Uchovávání – kolik uživatelů se vrátí?
Udržení vám pomůže pochopit, jak často se uživatelé vracejí k používání své aplikace, a to na základě kohort uživatelů, kteří v určitém časovém období provedli určitou obchodní akci.
- Pochopit, jaké konkrétní funkce způsobí, že se uživatelé budou vracet více než ostatní
- Hypotézy formulářů založené na datech skutečných uživatelů
- Určení, jestli je uchovávání problém s produktem
Ovládací prvky uchovávání nahoře umožňují definovat konkrétní události a časový rozsah pro výpočet uchování. Graf uprostřed poskytuje vizuální znázornění celkového procenta uchování podle zadaného časového rozsahu. Graf v dolní části představuje individuální uchovávání v daném časovém období. Tato úroveň podrobností vám umožní pochopit, co vaši uživatelé dělají a co může mít vliv na vracející se uživatele s podrobnější členitostí.
Další informace o sešitu Uchování
Vlastní obchodní události
Pokud chcete jasně porozumět tomu, 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 mohou sledovat cokoli od podrobných akcí uživatele, jako je kliknutí na konkrétní tlačítka, po významnější 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 Click Analytics Auto-collection.
I když v některých případech mohou zobrazení stránek představovat užitečné události, obecně to tak obecně není. Uživatel může otevřít stránku produktu bez zakoupení produktu.
U konkrétních obchodních událostí můžete na webu zobrazit graf průběhu uživatelů. Zjistěte, u kterých možností se u jednotlivých možností uchýlí a kde vypadnou nebo mají potíže. S tímto vědomím se můžete informovaně rozhodovat o prioritách v backlogu vývoje.
Události je možné protokolovat z klientské strany aplikace:
appInsights.trackEvent("ExpandDetailTab", {DetailTab: tabName});
Nebo na straně 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 je při kontrole na portálu mohli filtrovat nebo rozdělit. Ke každé události je také připojena standardní sada vlastností, jako je anonymní ID uživatele, které umožňuje sledovat posloupnost aktivit jednotlivých uživatelů.
Přečtěte si další informace o vlastních událostech a vlastnostech.
Průřezy a události kostkou
V nástrojích Uživatelé, Relace a Události můžete vytvořit průřez vlastních událostí podle uživatele, názvu události a vlastností.
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, jaké obchodní události potřebujete zaznamenávat, a kódovat sledovací volání těchto událostí do vaší aplikace od začátku.
A | Testování B
Pokud nevíte, která varianta funkce bude úspěšnější, vyděste obě funkce, aby byly přístupné 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 odlišné hodnoty vlastností ke všem telemetrickým hodnotám odesílaných jednotlivými verzemi vaší aplikace. Můžete to provést definováním vlastností v aktivním objektu TelemetryContext. Tyto výchozí vlastnosti se přidávají ke každé zprávě telemetrie, kterou aplikace odesílá – nejen k vašim vlastním zprávám, ale také ke standardní telemetrii.
Na portálu application Přehledy vyfiltrujte a rozdělte data podle hodnot vlastností, abyste mohli porovnat různé verze.
Chcete-li to provést, nastavte inicializátor telemetrie:
Aplikace v ASP.NET
// 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";
}
}
}
V inicializátoru 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í nebo using není ApplicationInsights.config TelemetryConfiguration.Active pro ASP.NET Core platné.
U ASP.NET Core se přidání nového souboru provádí přidáním do kontejneru Injektáž závislostí, TelemetryInitializer jak je znázorněno níže. To se provádí ConfigureServices v metodě vaší Startup.cs třídy.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}
Všechny nové telemetryClients automaticky přidávají hodnotu vlastnosti, kterou zadáte. Jednotlivé telemetrické události mohou přepsat výchozí hodnoty.