Application Insights ile kullanım analizi

Web veya mobil uygulamanıza yönelik en popüler özellikler hangileridir? Kullanıcılarınız uygulamanıza göre hedeflerine ulaşacak mı? Belirli noktaları bırakıp daha sonra geri mi dönerler? Uygulama Analizler, kullanıcıların uygulamayı nasıl kullanmaları hakkında güçlü içgörüler kazanmanıza yardımcı olur. Uygulamalarınızı her güncelleştirin, kullanıcılar için ne kadar iyi çalıştığını değerlendirebilirsiniz. Bu bilgiyle, sonraki geliştirme döngüleriniz hakkında veri odaklı kararlar veebilirsiniz.

Uygulamanıza telemetri gönderme

En iyi deneyim, uygulama sunucusu Analizler web sayfalarınıza Application Analizler yükleyerek elde edilir. Uygulamanın istemci ve sunucu bileşenleri telemetri verileri analiz için Azure portal gönderir.

  1. Sunucu kodu: ASP.NET , Azure, Java,Node.jsveya diğer uygulamalarınız için uygun modülü yükleyin.

  2. Web sayfası kodu: Kapatmadan önce web sayfanıza aşağıdaki betiği </head> ekleyin. Ölçüm aleti anahtarını Application Analizler kaynağınız için uygun değerle değiştirin:

    Geçerli Kod Parçacığı (aşağıda listelenmiştir) "5" sürümüdür, sürüm kod parçacığında sv:"#" olarak kodlanmış ve geçerli sürüm 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>
    

    Web sitelerini izlemek için daha gelişmiş yapılandırmalar hakkında daha fazla bilgi edinmek için JavaScript SDK'sı başvuru makalesine bakın.

  3. Mobil uygulama kodu: App Center SDK'sını kullanarak uygulamanıza olayları toplayın, ardından bu olayların kopyalarını bu kılavuzu takip Analizler analiz için Application Analizler'a gönderin.

  4. Telemetri al: Projenizi birkaç dakika hata ayıklama modunda çalıştırın ve ardından Uygulama Uygulama Görünümü'nde Genel Bakış bölmesinde sonuçları Analizler.

    Uygulamanın performansını izlemek ve kullanıcılarının uygulamayla ne yaptığını bulmak için uygulamayı yayımlayın.

Kullanım demografisi ve istatistiklerini keşfetme

Kullanıcıların uygulamalarınızı ne zaman, hangi sayfalarla en çok ilgilendiğini, kullanıcılarınızı nerede olduğunu, hangi tarayıcıları ve işletim sistemlerini kullan olduklarını bulun.

Kullanıcılar ve Oturumlar raporları, verilerinizi sayfalara veya özel olaylara göre filtreler ve konum, ortam ve sayfa gibi özelliklere göre segmentlere böler. Kendi filtrelerinizi de ekleyebilirsiniz.

Ekran yakalama, çubuk grafikli Kullanıcılar sekmesini gösterir.

Analizler veri kümesinde ilginç desenlere işaret ediyor.

  • Kullanıcılar raporu, seçtiğiniz zaman dönemleri içinde sayfalarınıza erişen benzersiz kullanıcıların sayısını sayar. Web uygulamaları için kullanıcılar tanımlama bilgileri kullanılarak sayılır. Sitenize farklı tarayıcılar veya istemci makineleriyle erişen veya tanımlama bilgilerini temiz alan kullanıcılar birden çok kez sayılır.
  • Oturumlar raporu, sitenize erişen kullanıcı oturumlarının sayısını sayar. Oturum, kullanıcı tarafından yarım saatten uzun bir süre boyunca sonlandırılan bir etkinlik süresidir.

Kullanıcılar, Oturumlar ve Olaylar araçları hakkında daha fazla bilgi

Elde tutma - kaç kullanıcı geri döner?

Elde tutma, belirli bir zaman aralığı boyunca bazı iş eylemlerini gerçekleştiren kullanıcıların kohortlarına dayanarak kullanıcılarınızı uygulamalarını ne sıklıkta tekrar kullanmaya geri dönebilirsiniz?

  • Kullanıcıların diğer özelliklerden daha fazla geri dönmelerini neden olan özellikleri anlama
  • Gerçek kullanıcı verilerini temel alan hipotezler oluşturma
  • Elde tutmanın üründe sorun olup olmadığını belirleme

Ekran yakalama, kullanıcıların kendi uygulamasını kullanmak için dönüş sıklıkları hakkında bilgi gösteren Saklama çalışma kitabını gösterir.

Üst sıralarda yer alan bekletme denetimleri, saklamayı hesaplamak için belirli olayları ve zaman aralığını tanımlamaya olanak sağlar. Ortadaki grafik, belirtilen zaman aralığına göre genel saklama yüzdesinin görsel bir gösterimini verir. En alttaki grafik, belirli bir zaman aralığı içinde tek tek elde tutmayı temsil eder. Bu ayrıntı düzeyi, kullanıcılarınızı ne yaptığını ve geri dönen kullanıcıları daha ayrıntılı bir ayrıntı düzeyiyle etkileyebilecekleri anlamanıza olanak sağlar.

Bekletme çalışma kitabı hakkında daha fazla bilgi

Özel iş olayları

Kullanıcıların uygulamanıza ne yaptığını net bir şekilde anlamak için özel olayları günlüğe almak için kod satırları eklemek yararlı olur. Bu etkinlikler, belirli düğmelere tıklama gibi ayrıntılı kullanıcı eylemlerinden satın alma veya oyun kazanma gibi daha önemli iş olaylarını izleyebilir.

Özel olayları toplamak için Click Analytics Otomatik Toplama Eklentisini de kullanabilirsiniz.

Bazı durumlarda sayfa görünümleri yararlı olayları temsil ediyor olsa da, bu genel olarak doğru değildir. Kullanıcı, ürünü satın almadan bir ürün sayfası açabilir.

Belirli iş olaylarıyla, kullanıcılarının ilerleme durumuna siteniz üzerinden grafik ekleyebilirsiniz. Farklı seçenekler için tercihlerini ve nerede bırak olduklarını veya güçlükler olduğunu bulun. Bu bilgilerle, geliştirme kapsamlarınıza ilişkin önceliklerle ilgili bilinçli kararlar ve ardından karar vesersiniz.

Olaylar uygulamanın istemci tarafından günlüğe kaydedilebilirsiniz:

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

Veya sunucu tarafında:

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

Portalda incelerken olayları filtrelemek veya bölmek için bu olaylara özellik değerleri iliştirebilirsiniz. Her bir etkinliğe anonim kullanıcı kimliği gibi standart bir özellik kümesi de ekli olarak tek bir kullanıcının etkinlik dizisini izlemesini sağlar.

Özel olaylar ve özellikler hakkında daha fazla bilgi.

Dilim ve zar olayları

Kullanıcılar, Oturumlar ve Olaylar araçlarında, özel olayları kullanıcıya, olay adına ve özelliklere göre dilimler ve dizinlersiniz.

Ekran yakalama, AnalyticsItemsOperation tarafından filtrelenmiş ve AppID'ye göre bölünmüş Olaylar sekmesini gösterir.

Uygulamayla telemetri tasarlama

Uygulamanın her özelliğini tasarlarken, bu özelliğin başarısını kullanıcılarınız ile nasıl ölçtüyebilirsiniz? Kaydetmeniz gereken iş olaylarını seçin ve bu olaylar için izleme çağrılarını en baştan uygulamanıza kod olarak girin.

Bir | B Testi

Bir özelliğin hangi çeşidinin daha başarılı olacağını bilmiyorsanız her ikisini de yayınla ve her biri farklı kullanıcılar tarafından erişilebilir hale gelecektir. Her biri için başarıyı ölçün ve ardından birleşik bir sürüme geçin.

Bu teknik için, uygulamanın her sürümü tarafından gönderilen tüm telemetriye ayrı özellik değerleri iliştirebilirsiniz. Etkin TelemetryContext'te özellikleri tanımlayarak bunu kullanabilirsiniz. Bu varsayılan özellikler, uygulamanın gönderdiği her telemetri iletisine eklenir; yalnızca özel iletilerinize değil, standart telemetri verilerine de eklenir.

Application Analizler portalında, farklı sürümleri karşılaştırmak için verilerinizi özellik değerlerine göre filtrele ve böl.

Bunu yapmak için bir telemetri başlatıcısı ayarlayın:

ASP.NET uygulamaları

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

Global.asax.cs gibi web uygulaması başlatıcıda:


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

ASP.NET Core uygulamaları

Not

kullanarak veya kullanarak ApplicationInsights.config başlatıcı TelemetryConfiguration.Active eklemek, ASP.NET Core geçerli değildir.

Bu ASP.NET Core için, aşağıda gösterildiği gibi, yeni bir ekleme bağımlılık ekleme TelemetryInitializer kapsayıcısı eklenmiştir. Bu, ConfigureServices sınıfınıza göre Startup.cs yapılır.

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

Tüm yeni TelemetryClients, belirttiğiniz özellik değerini otomatik olarak ekler. Tek tek telemetri olayları varsayılan değerleri geçersiz k olabilir.

Sonraki adımlar