Használatelemzés az Application Insights szolgáltatással

A web- vagy mobilalkalmazás mely funkciói a legnépszerűbbek? A felhasználók az alkalmazással érik el a céljukat? Adott pontokon kiesnek, és később térnek vissza? Az Elemzések segítségével hatékony betekintést nyerhet az alkalmazás használatára. Minden alkalommal, amikor frissíti az alkalmazást, felmérheti, hogy mennyire jól működik a felhasználók számára. Ezzel a tudással adatvezérelt döntéseket hozhat a következő fejlesztési ciklusokkal kapcsolatban.

Telemetria küldése az alkalmazásból

A legjobb élmény az Application Elemzések az alkalmazáskiszolgáló kódjának és weblapjain való telepítésével. Az alkalmazás ügyfél- és kiszolgáló-összetevői telemetriai adatokat küldenek vissza Azure Portal az alkalmazásnak elemzés céljából.

  1. Kiszolgálókód: Telepítse a megfelelő modult a ASP.NET, Azure, Java, Node.js, vagy más alkalmazáshoz.

  2. Weblapkód: A bezárás előtt adja hozzá a következő szkriptet a </head> weblaphoz. Cserélje le a rendszeregységkulcsot az Application Elemzések megfelelő értékével:

    Az aktuális kódrészlet (alább látható) az 5-ös verzió, a verzió sv:"#" kódolva van a kódrészletben, és az aktuális verzió az 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>
    

    A webhelyek monitorozásának speciális konfigurációiról a JavaScript SDK-referenciákat ismertető cikkben olvashat.

  3. Mobilalkalmazás kódja: A App Center SDK-val eseményeket gyűjt az alkalmazásból, majd az útmutató alapján elküldje az események másolatát Elemzések Application Elemzések számára elemzés céljából.

  4. Telemetria lekérte: Futtassa a projektet hibakeresési módban néhány percig, majd keresse meg az eredményeket az Application Elemzések.

    Tegye közzé az alkalmazást az alkalmazás teljesítményének figyelése és annak kiderítése érdekében, hogy a felhasználók mire valók az alkalmazással.

A használat demográfiai és statisztikai adatai

Tudja meg, hogy mikor használják az alkalmazást, milyen oldalak érdeklik a leginkább, hol találhatók a felhasználók, milyen böngészőket és operációs rendszereket használnak.

A Felhasználók és munkamenetek jelentések oldalak vagy egyéni események alapján szűrik az adatokat, és olyan tulajdonságok szerint szegmentálják őket, mint a hely, a környezet és az oldal. Saját szűrőket is hozzáadhat.

A képernyőképen a Felhasználók lap látható egy sávdiagrammal.

Elemzések a jobb oldalon érdekes mintázatokat mutatunk be az adathalmazban.

  • A Felhasználók jelentés megszámol néhány egyedi felhasználót, akik a kiválasztott időszakokban férnek hozzá az oldalakhoz. Webalkalmazások esetében a rendszer cookie-k használatával számolja a felhasználókat. Ha valaki más böngészővel vagy ügyfélgépekkel fér hozzá a webhelyhez, vagy törli a cookie-kat, akkor azok egynél több alkalommal lesznek megszámolva.
  • A Munkamenetek jelentés megszámolja a webhelyhez hozzáférő felhasználói munkamenetek számát. A munkamenet egy felhasználó által végzett tevékenységi időszak, amelyet fél óránál hosszabb inaktivitási időtartam lezár.

További információk a felhasználók, munkamenetek és események eszközeiről

Megtartás – hány felhasználó tért vissza?

A megtartás segít megérteni, hogy a felhasználók milyen gyakran térnek vissza az alkalmazásukhoz azon felhasználók kohorszai alapján, akik valamilyen üzleti műveletet hajtottak végre egy adott idő gyűjtőben.

  • Annak a tudata, hogy egyes funkciók miatt a felhasználók többre tértek vissza, mint mások
  • Valós felhasználói adatokon alapuló hipotézisek
  • Annak meghatározása, hogy a megtartás problémát jelent-e a termékben

A képernyőfelvételen a Retention (Megőrzés) munkafüzet látható, amely arról jelenít meg információkat, hogy a felhasználók milyen gyakran térnek vissza az alkalmazásukhoz.

Felül a megőrzési vezérlők lehetővé teszik meghatározott események és időtartományok definiálását a megőrzés kiszámításához. A középső gráf vizuálisan ábrázolja a teljes megőrzés százalékos arányát a megadott időtartomány szerint. Az alsó grafikon az egyes adatmegőrzéseket jelöli egy adott időszakban. Ez a részletességi szint lehetővé teszi, hogy megértse, mit csinálnak a felhasználók, és milyen hatással lehet a visszatérő felhasználókra részletesebben.

További információk a Retention (Adatmegőrzés) munkafüzetről

Egyéni üzleti események

Az egyéni események naplózása érdekében hasznos kódsorokat beszúrni, hogy egyértelműen megértsük, mit tegyenek a felhasználók az alkalmazással. Ezek az események nyomon követnek mindent, a részletes felhasználói műveletektől, például az egyes gombokra való kattintástól a jelentősebb üzleti eseményeken át, például a vásárlástól vagy a játék megnyeréstől.

Az egyéni események gyűjtéséhez használhatja a Click Analytics automatikus gyűjtési beépülő modulját is.

Bár bizonyos esetekben az oldalnézetek hasznos eseményeket képviselnek, ez általában nem igaz. A felhasználó a termék vásárlása nélkül nyithat meg egy termékoldalt.

Adott üzleti események esetén a felhasználók előrehaladását a webhelyen keresztül ábrázolhatja. Ismerje meg a különböző lehetőségek beállításait, valamint azt, hogy hol esnek ki, vagy hol vannak nehézségeik. Ezzel a tudással megalapozott döntéseket hozhat a fejlesztési hátralék prioritásaival kapcsolatban.

Az események az alkalmazás ügyféloldalán naplózhatóak:

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

Vagy a kiszolgálóoldalról:

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

Ezekhez az eseményekhez tulajdonságértékeket csatolhat, így szűrheti vagy feloszthatja az eseményeket, amikor megvizsgálja őket a portálon. Az egyes eseményekhez egy szabványos tulajdonságkészlet is csatolva van, például névtelen felhasználói azonosító, amely lehetővé teszi egy adott felhasználó tevékenységsorozatának nyomon követését.

További információ az egyéni eseményekről és tulajdonságokról.

Események szeletelése és szeletelése

A Felhasználók, munkamenetek és események eszközökben felhasználó, eseménynév és tulajdonságok alapján szeletelhet és szeletelhet egyéni eseményeket.

A képernyőképen az Események lap látható, az AnalyticsItemsOperation szerint szűrve, appID szerint felosztva.

A telemetria megtervezése az alkalmazással

Az alkalmazás egyes funkcióinak tervezésekor gondolja át, hogyan fogja mérni annak sikerességét a felhasználókkal. Döntse el, milyen üzleti eseményeket kell rögzítenie, és kezdettől kódba kódolta az események nyomkövetési hívásait az alkalmazásba.

Egy | B tesztelés

Ha nem tudja, hogy egy funkció melyik változata lesz sikeresebb, engedje el mindkettőt, hogy mindegyik elérhető legyen a különböző felhasználók számára. Mérje meg az egyes verziók sikerét, majd lépjen át egy egységes verzióra.

Ehhez a technikához különböző tulajdonságértékeket csatol az alkalmazás egyes verziói által küldött összes telemetriai adathoz. Ezt úgy teheti meg, ha tulajdonságokat definiál az aktív TelemetryContext szövegben. Ezek az alapértelmezett tulajdonságok az alkalmazás által küldött összes telemetriai üzenethez hozzá vannak adva – nem csak az egyéni üzenetekhez, hanem a standard telemetriához is.

Az Application Elemzések szűrje és ossza fel az adatokat a tulajdonságértékek alapján, hogy összehasonlítsa a különböző verziókat.

Ehhez állítson be egy telemetriai inicializálót:

ASP.NET-alkalmazások

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

A webalkalmazás inicializálóban, például a Global.asax.cs fájlban:


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

ASP.NET Core-alkalmazások

Megjegyzés

Az inicializáló a vagy a használatával ApplicationInsights.config való hozzáadása nem érvényes ASP.NET Core TelemetryConfiguration.Active alkalmazásokhoz.

Az ASP.NET Core alkalmazások esetében az új hozzáadása a függőséginjektálás tárolóhoz való hozzáadásával TelemetryInitializer történik, ahogy az alább látható. Ez az osztály ConfigureServices metódusában Startup.cs történik.

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

Minden új TelemetryClient automatikusan hozzáadja a megadott tulajdonságértéket. Az egyes telemetriai események felülírhatják az alapértelmezett értékeket.

Következő lépések