Özel olaylar ve ölçümler için Application Insights API

Kullanıcılara neler yaptığını öğrenmek veya sorunları tanılamaya yardımcı olmak için uygulamanıza birkaç satır kod ekleyin. Cihaz ve Masaüstü uygulamalarından, Web istemcilerinden ve Web sunucularından telemetri gönderebilirsiniz. özel olaylar ve ölçümler ve kendi standart telemetri sürümleriniz göndermek için Azure Application Insights çekirdek telemetri apı 'sini kullanın. bu apı, standart Application Insights veri toplayıcılarının kullandığı apı 'dir.

API özeti

Çekirdek API 'SI, GetMetric (yalnızca .net) gibi birkaç çeşitten farklı olarak tüm platformlarda tek bir şekilde yayılır.

Yöntem Kullanıldığı yerler
TrackPageView Sayfalar, ekranlar, Blade veya formlar.
TrackEvent Kullanıcı eylemleri ve diğer olaylar. Kullanıcı davranışını izlemek veya performansı izlemek için kullanılır.
GetMetric Sıfır ve çok boyutlu ölçümler, merkezi olarak yapılandırılmış toplama, yalnızca C#.
TrackMetric Belirli olaylarla ilgili değildir sıra uzunlukları gibi performans ölçümleri.
TrackException Tanılama için özel durumlar günlüğe kaydediliyor. Diğer olaylarla ilgili olarak nerede olduğunu izleyin ve yığın izlemelerini inceleyin.
TrackRequest Performans analizi için sunucu isteklerinin sıklığını ve süresini günlüğe kaydetme.
TrackTrace Kaynak tanılama günlük iletileri. Ayrıca, üçüncü taraf günlüklerini yakalayabilirsiniz.
TrackDependency Uygulamanızın bağımlı olduğu dış bileşenlere yapılan çağrıların süresini ve sıklığını günlüğe kaydetme.

Bu telemetri çağrılarının çoğuna Özellikler ve ölçümler ekleyebilirsiniz.

Başlamadan önce

Application Insights SDK 'da henüz bir başvurunuz yoksa:

Bir TelemetryClient örneği alın

Bir örneğini al TelemetryClient (Web sayfalarındaki JavaScript hariç):

.net/.net Core uygulamaları için ASP.NET Core uygulamalar ve HTTP olmayan/çalışan için, TelemetryClient ilgili belgelerde açıklandığı gibi bağımlılık ekleme kapsayıcısından bir örnek almanız önerilir.

AzureFunctions v2 + veya Azure WebJobs v3 + kullanıyorsanız, Bu belgeyiizleyin.

C#

private TelemetryClient telemetry = new TelemetryClient();

Bu yöntemi artık kullanılmayan iletilerde, daha fazla ayrıntı için lütfen Microsoft/ApplicationInsights-DotNet # 1152 adresini ziyaret edin.

Visual Basic

Private Dim telemetry As New TelemetryClient

Java

private TelemetryClient telemetry = new TelemetryClient();

Node.js

var telemetry = applicationInsights.defaultClient;

TelemetryClient iş parçacığı güvenlidir.

ASP.NET ve Java projelerinde, gelen HTTP istekleri otomatik olarak yakalanır. Uygulamanızın diğer modülü için ek TelemetryClient örnekleri oluşturmak isteyebilirsiniz. Örneğin, iş mantığı olaylarını raporlamak için, ara yazılım sınıfınızdaki bir TelemetryClient örneğiniz olabilir. Makineyi tanımlamak için UserID ve DeviceID gibi özellikleri ayarlayabilirsiniz. Bu bilgiler, örneğin gönderdiği tüm olaylara iliştirilir.

C#

TelemetryClient.Context.User.Id = "...";
TelemetryClient.Context.Device.Id = "...";

Java

telemetry.getContext().getUser().setId("...");
telemetry.getContext().getDevice().setId("...");

Node.js projelerinde, new applicationInsights.TelemetryClient(instrumentationKey?) Yeni bir örnek oluşturmak için kullanabilirsiniz, ancak bu yalnızca Singleton 'ten yalıtılmış yapılandırma gerektiren senaryolar için önerilir defaultClient .

TrackEvent

Application Insights, özel bir olay , toplanan bir sayı olarak Ölçüm Gezgini görüntülenebilecek ve tek tek oluşum olarak tanılama aramasında kullanabileceğiniz bir veri noktasıdır. (MVC veya diğer Framework "olayları" ile ilgili değildir.)

TrackEventÇeşitli olayları saymak için kodunuzda çağrı ekleyin. Kullanıcıların belirli bir özelliği ne sıklıkta seçtikleri, belirli hedeflere ne sıklıkta elde ettikleri veya ne sıklıkta belirli türde hatalar gerçekleştirdikleri.

Örneğin, bir oyun uygulamasında, Kullanıcı oyunu her kullandığında bir olay gönderin:

JavaScript

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

C#

telemetry.TrackEvent("WinGame");

Visual Basic

telemetry.TrackEvent("WinGame")

Java

telemetry.trackEvent("WinGame");

Node.js

telemetry.trackEvent({name: "WinGame"});

Analytics 'te özel olaylar

telemetri customEvents Application Insights günlükler sekmesi veya kullanım deneyimi' nde tabloda bulunur. Olaylar ' dan gelebilir trackEvent(..) veya analiz otomatik koleksiyon eklentisi 'ne tıklayabilir.

Örnekleme işlemi içinde Ise, ItemCount özelliği 1 ' den büyük bir değeri gösterir. Örneğin ItemCount = = 10, trackEvent () için 10 çağrının (), örnekleme işleminin yalnızca birini aktardığı anlamına gelir. Özel olayların doğru sayısını almak için, bu nedenle gibi bir kod kullanmanız gerekir customEvents | summarize sum(itemCount) .

GetMetric

.NET ve .NET Core uygulamaları için yerel olarak önceden toplanmış ölçümleri yakalamak üzere GetMetric () çağrısını etkin bir şekilde nasıl kullanacağınızı öğrenmek için GetMetric belgelerini ziyaret edin.

TrackMetric

Not

Microsoft. ApplicationInsights. TelemetryClient. TrackMetric ölçüm göndermek için tercih edilen yöntem değildir. Ölçümler gönderilmeden önce her zaman bir süre içinde önceden toplanmalıdır. SDK ön toplama özelliklerine erişim için bir ölçüm nesnesi almak üzere GetMetric (..) aşırı yüklerini kullanın. Kendi ön toplama mantığınızı uygulamadıysanız, elde edilen toplamaları göndermek için TrackMetric () yöntemini kullanabilirsiniz. Uygulamanız zaman içinde toplanmadan her gün ayrı bir telemetri öğesi gönderilmesini gerektiriyorsa, büyük olasılıkla olay telemetrisi için bir kullanım örneğine sahip olursunuz; bkz. TelemetryClient. TrackEvent (Microsoft. ApplicationInsights. DataContracts. Eventtelemetri).

Application Insights, belirli olaylara eklenmemiş ölçümleri grafik olarak oluşturabilir. Örneğin, düzenli aralıklarla bir sıra uzunluğu izleyebilirsiniz. Ölçümler sayesinde, bireysel ölçümler Çeşitlemeler ve eğilimleri daha az ilgi çekici olduğundan istatistiksel grafikler yararlı olur.

Application Insights ölçümleri göndermek için apı 'yi kullanabilirsiniz TrackMetric(..) . Ölçüm göndermenin iki yolu vardır:

  • Tek değer. uygulamanızda bir ölçüm gerçekleştirdiğinizde, karşılık gelen değeri Application Insights gönderirsiniz. Örneğin, bir kapsayıcıdaki öğelerin sayısını açıklayan bir ölçümünüzün olduğunu varsayalım. Belirli bir süre boyunca, önce kapsayıcıya üç öğe yerleştirip iki öğeyi kaldırırsınız. Buna uygun olarak, iki kez çağrı yapmanız gerekir TrackMetric : önce değeri geçirerek değeri 3 -2 . Application Insights her iki değeri de sizin adınıza depolar.

  • Toplama. Ölçümler ile çalışırken her tek ölçüm çok nadir olur. Bunun yerine, belirli bir süre boyunca ne olduğunu bir Özet önem taşır. Bu tür bir Özet toplama olarak adlandırılır. Yukarıdaki örnekte, bu dönemin toplam ölçüm toplamı 1 ve ölçüm değerlerinin sayısı 2 . Toplama yaklaşımını kullanırken, TrackMetric zaman aralığı için yalnızca bir kez çağırır ve toplama değerlerini gönderirsiniz. bu, Application Insights ' ye daha az veri noktası göndererek maliyet ve performans yükünü önemli ölçüde azaltacağından ve ilgili tüm bilgileri almaya devam ederken önerilen yaklaşımdır.

Örnekler

Tek değerler

Tek bir ölçüm değeri göndermek için:

JavaScript

appInsights.trackMetric({name: "queueLength", average: 42});

C#

var sample = new MetricTelemetry();
sample.Name = "queueLength";
sample.Value = 42.3;
telemetryClient.TrackMetric(sample);

Java

telemetry.trackMetric("queueLength", 42.0);

Node.js

telemetry.trackMetric({name: "queueLength", value: 42.0});

Analytics 'te özel ölçümler

telemetri, customMetrics Application Insights Analytics'teki tabloda kullanılabilir. Her satır uygulamanızdaki bir çağrıyı temsil eder trackMetric(..) .

  • valueSum -Bu, ölçümlerin toplamıdır. Ortalama değeri almak için, öğesini ayırın valueCount .
  • valueCount -Bu çağrıda toplanmış ölçüm sayısı trackMetric(..) .

Sayfa görünümleri

Bir cihaz veya Web sayfası uygulamasında, her ekran veya sayfa yüklendiğinde varsayılan olarak sayfa görünümü telemetrisi gönderilir. Ancak sayfa görünümlerini ek veya farklı zamanlarda izlemek için bunu değiştirebilirsiniz. Örneğin, sekmeler veya blade görüntüleyen bir uygulamada, Kullanıcı yeni bir dikey pencere açtığında bir sayfayı izlemek isteyebilirsiniz.

Kullanıcı ve oturum verileri sayfa görünümleriyle birlikte özellikler olarak gönderilir; bu nedenle, sayfa görüntüleme telemetrisi olduğunda Kullanıcı ve oturum grafikleri etkin olur.

Özel sayfa görünümleri

JavaScript

appInsights.trackPageView("tab1");

C#

telemetry.TrackPageView("GameReviewPage");

Visual Basic

telemetry.TrackPageView("GameReviewPage")

Java

telemetry.trackPageView("GameReviewPage");

Farklı HTML sayfaları içinde birkaç sekmeye sahipseniz URL 'YI de belirtebilirsiniz:

appInsights.trackPageView("tab1", "http://fabrikam.com/page1.htm");

Zamanlama sayfası görünümleri

Varsayılan olarak, sayfa görünümü yükleme süresi olarak bildirilen süreler, tarayıcının sayfa yükleme olayı çağrılana kadar, tarayıcı isteği gönderdiğinde ölçülür.

Bunun yerine şunlardan birini yapabilirsiniz:

  • TrackPageview çağrısında açık bir süre ayarlayın: appInsights.trackPageView("tab1", null, null, null, durationInMilliseconds); .
  • Sayfa görüntüleme zamanlaması çağrılarını ve öğesini startTrackPage kullanın stopTrackPage .

JavaScript

// To start timing a page:
appInsights.startTrackPage("Page1");

...

// To stop timing and log the page:
appInsights.stopTrackPage("Page1", url, properties, measurements);

İlk parametre olarak kullandığınız ad, başlangıç ve durdurma çağrılarını ilişkilendirir. Geçerli sayfa adını varsayılan olarak alır.

Ölçüm Gezgini görüntülenen sonuç sayfası yükleme süreleri, başlangıç ve durdurma çağrıları arasındaki aralıktan türetilir. Size gerçekten zaman aralığı kadar zaman dilimi kadar.

Analytics 'te sayfa telemetrisi

Analiz ' de iki tabloda, tarayıcı işlemlerinden verileri göster:

  • pageViewsTablo, URL ve sayfa başlığı hakkındaki verileri içerir
  • browserTimingsTablo, gelen verileri işlemek için geçen süre gibi istemci performansı hakkındaki verileri içerir

Tarayıcının farklı sayfaları işlemeye ne kadar süreceği hakkında bilgi edinmek için:

browserTimings
| summarize avg(networkDuration), avg(processingDuration), avg(totalDuration) by name

Farklı tarayıcıların popululuğunu bulma:

pageViews
| summarize count() by client_Browser

Sayfa görünümlerini AJAX çağrılarına ilişkilendirmek için bağımlılıklarla birleştirin:

pageViews
| join (dependencies) on operation_Id 

TrackRequest

Sunucu SDK 'Sı HTTP isteklerini günlüğe kaydetmek için TrackRequest kullanır.

Ayrıca, Web hizmeti modülünün çalıştırıldığı bağlamdaki isteklerin benzetimini yapmak istiyorsanız kendiniz de çağırabilirsiniz.

Ancak, istek Telemetriyi göndermek için önerilen yol, isteğin bir işlem bağlamıişlevi görür.

İşlem bağlamı

Telemetri öğelerini işlem bağlamıyla ilişkilendirerek ilişkilendirilebilir. Standart istek izleme modülü, bir HTTP isteği işlenirken gönderilen özel durumlar ve diğer olaylar için bunu yapar. Arama ve analiz' de, istekle ILIŞKILI tüm olayları işlem kimliğini kullanarak kolayca bulabilirsiniz.

bağıntı hakkında daha fazla bilgi için Application Insights telemetri bağıntısını inceleyin.

Telemetriyi el ile izlerken, bu kalıbı kullanarak telemetri bağıntısını sağlamanın en kolay yolu:

C#

// Establish an operation context and associated telemetry item:
using (var operation = telemetryClient.StartOperation<RequestTelemetry>("operationName"))
{
    // Telemetry sent in here will use the same operation ID.
    ...
    telemetryClient.TrackTrace(...); // or other Track* calls
    ...

    // Set properties of containing telemetry item--for example:
    operation.Telemetry.ResponseCode = "200";

    // Optional: explicitly send telemetry item:
    telemetryClient.StopOperation(operation);

} // When operation is disposed, telemetry item is sent.

Bir işlem bağlamını ayarlamaya birlikte, StartOperation belirttiğiniz türden bir telemetri öğesi oluşturur. İşlemi çıkardığınızda telemetri öğesini gönderir veya açıkça çağırdıysanız StopOperation . RequestTelemetryTelemetri türü olarak kullanıyorsanız, süresi başlangıç ve durdurma arasındaki zaman aralığı olarak ayarlanır.

İşlem kapsamı içinde bildirilen telemetri öğeleri, bu işlemin ' alt öğeleri ' olur. İşlem bağlamları iç içe olabilir.

Aramada, işlem bağlamı Ilgili öğeler listesini oluşturmak için kullanılır:

İlgili öğeler

özel işlemleri izleme hakkında daha fazla bilgi için bkz. .net SDK ile özel işlemleri izleme Application Insights .

Analytics istekleri

Application Insights Analytics'te, istekler requests tabloda gösterilir.

Örnekleme işlemi içinde Ise, ItemCount özelliği 1 ' den büyük bir değer gösterir. Örneğin ItemCount = = 10, trackRequest () için 10 çağrının, örnekleme işleminin yalnızca birini aktardığı anlamına gelir. İstek adlarına göre doğru istek sayısını ve ortalama süreyi almak için, şöyle bir kod kullanın:

requests
| summarize count = sum(itemCount), avgduration = avg(duration) by name

TrackException

Application Insights özel durum gönder:

Raporlar yığın izlemelerini içerir.

C#

try
{
    ...
}
catch (Exception ex)
{
    telemetry.TrackException(ex);
}

Java

try {
    ...
} catch (Exception ex) {
    telemetry.trackException(ex);
}

JavaScript

try
{
    ...
}
catch (ex)
{
    appInsights.trackException({exception: ex});
}

Node.js

try
{
    ...
}
catch (ex)
{
    telemetry.trackException({exception: ex});
}

SDK 'lar birçok özel durumu otomatik olarak yakalar, bu nedenle her zaman TrackException 'ı açıkça çağırmanız gerekmez.

({
    instrumentationKey: "your key",
    disableExceptionTracking: true
})

Analytics 'te özel durumlar

Application Insights Analytics'te özel durumlar exceptions tabloda gösterilir.

Örnekleme işlemi ise, itemCount özelliği 1 ' den büyük bir değeri gösterir. Örneğin ItemCount = = 10, trackException () için 10 çağrının, örnekleme işleminin yalnızca birini aktardığı anlamına gelir. Özel durum türüne göre bölünmüş özel durumların doğru sayısını almak için, şu gibi bir kod kullanın:

exceptions
| summarize sum(itemCount) by type

Önemli yığın bilgilerinin çoğu farklı değişkenlere zaten ayıklandı, ancak details daha fazla bilgi edinmek için yapıyı ayırabilirsiniz. Bu yapı dinamik olduğundan, sonucu istediğiniz türe atamalısınız. Örnek:

exceptions
| extend method2 = tostring(details[0].parsedStack[1].method)

Özel durumları ilgili isteklerle ilişkilendirmek için bir JOIN kullanın:

exceptions
| join (requests) on operation_Id

TrackTrace

Application Insights için bir "içerik haritası izi" göndererek sorunları tanılamaya yardımcı olması için tracktrace kullanın. Tanılama verileri parçalarını gönderebilir ve bunları Tanılama aramasındainceleyebilirsiniz.

.NET günlük bağdaştırıcılarında , portala üçüncü taraf Günlükler göndermek IÇIN bu API 'yi kullanır.

java 'da Application Insights java aracısı , günlükleri otomatik olarak toplayıp portala gönderir.

C#

telemetry.TrackTrace(message, SeverityLevel.Warning, properties);

Java

telemetry.trackTrace(message, SeverityLevel.Warning, properties);

Node.js

telemetry.trackTrace({
    message: message,
    severity: applicationInsights.Contracts.SeverityLevel.Warning,
    properties: properties
});

İstemci/tarayıcı tarafı JavaScript

trackTrace({
    message: string, 
    properties?: {[string]:string}, 
    severityLevel?: SeverityLevel
})

Yöntemi girme veya bir yönteme ayrılma gibi bir tanılama olayını günlüğe kaydetme.

Parametre Açıklama
message Tanılama verileri. Bir adından çok daha uzun olabilir.
properties Dizenin dize eşlemesi: portalda özel durumları filtrelemek Için kullanılan ek veriler. Varsayılan olarak boştur.
severityLevel Desteklenen değerler: SeverityLevel.ts

İleti içeriğini arayabilirsiniz ancak (özellik değerlerinin aksine) bu içerik üzerinde filtre uygulamazsınız.

üzerinde boyut message sınırı, özelliklerde sınırdan çok daha yüksektir. TrackTrace'in bir avantajı, iletiye görece uzun veriler koyabilirsiniz. Örneğin, POST verilerini orada kodlayabilir.

Ayrıca, iletinize bir önem derecesi eklemek de gerekir. Ayrıca diğer telemetri verileri gibi, farklı izleme kümelerini filtrelemenize veya aramanıza yardımcı olmak için özellik değerleri ebilirsiniz. Örnek:

C#

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow database response",
                SeverityLevel.Warning,
                new Dictionary<string,string> { {"database", db.ID} });

Java

Map<String, Integer> properties = new HashMap<>();
properties.put("Database", db.ID);
telemetry.trackTrace("Slow Database response", SeverityLevel.Warning, properties);

Arama'da,belirli bir veritabanıyla ilgili belirli bir önem düzeyine sahip tüm iletileri kolayca filtrelayabilirsiniz.

Analizde İzlemeler

Application Analizler Analytics'teTrackTrace çağrıları tabloda traces yer alır.

Örnekleme işlemde ise itemCount özelliği 1'den büyük bir değer gösterir. Örneğin itemCount==10, 10 çağrısı olduğu anlamına gelir. Örnekleme trackTrace() işlemi bunlardan yalnızca birini iletir. İzleme çağrılarının doğru sayısını almak için gibi bir kod traces | summarize sum(itemCount) kullanabilirsiniz.

TrackDependency

Dış bir kod parçasına yapılan çağrıların yanıt zamanlarını ve başarı oranlarını izlemek için TrackDependency çağrısını kullanın. Sonuçlar portalda bağımlılık grafiklerinde görüntülenir. Aşağıdaki kod parçacığının bağımlılık çağrısı yapılan her yere ekleniyor olması gerekir.

Not

.NET ve .NET Core için alternatif olarak bağıntı için gereken özellikleri ve başlangıç saati ve süre gibi diğer bazı özellikleri dolduran (uzantı) yöntemini kullanabilirsiniz. Bu nedenle aşağıdaki örneklerde olduğu gibi özel bir zamanlayıcı oluşturmanız TelemetryClient.StartOperation DependencyTelemetry gerekmez. Daha fazla bilgi için bu makalenin giden bağımlılık izleme bölümüne bakın.

C#

var success = false;
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
    success = dependency.Call();
}
catch(Exception ex) 
{
    success = false;
    telemetry.TrackException(ex);
    throw new Exception("Operation went wrong", ex);
}
finally
{
    timer.Stop();
    telemetry.TrackDependency("DependencyType", "myDependency", "myCall", startTime, timer.Elapsed, success);
}

Java

boolean success = false;
Instant startTime = Instant.now();
try {
    success = dependency.call();
}
finally {
    Instant endTime = Instant.now();
    Duration delta = Duration.between(startTime, endTime);
    RemoteDependencyTelemetry dependencyTelemetry = new RemoteDependencyTelemetry("My Dependency", "myCall", delta, success);
    dependencyTelemetry.setTimeStamp(startTime);
    telemetry.trackDependency(dependencyTelemetry);
}

Node.js

var success = false;
var startTime = new Date().getTime();
try
{
    success = dependency.Call();
}
finally
{
    var elapsed = new Date() - startTime;
    telemetry.trackDependency({
        dependencyTypeName: "myDependency",
        name: "myCall",
        duration: elapsed,
        success: success
    });
}

Sunucu SDK'lerinde belirli bağımlılık çağrılarını otomatik olarak (örneğin veritabanlarına ve REST API'lere) keşfeden ve takip alan bir bağımlılık modülü olduğunu unutmayın. Modülün çalışması için sunucunuza bir aracı yüklemeniz gerekir.

Java'da, Birçok bağımlılık çağrısı Java aracısı tarafından Application Analizler otomatik olarak izlenir.

Otomatik izlemenin yakalaması olmayan çağrıları izlemek için bu çağrıyı kullanırsanız.

C# ile standart bağımlılık izleme modülünü kapatmak için,ApplicationInsights.configve başvurularını DependencyCollector.DependencyTrackingTelemetryModule silin. Java için bkz. Otomatik olarak toplanan belirli telemetrisini gizleme.

Analiz bağımlılıkları

Application Analizler Analytics'tetrackDependency çağrıları tabloda dependencies yer alır.

Örnekleme işlemde ise itemCount özelliği 1'den büyük bir değer gösterir. Örneğin itemCount==10, trackDependency() için 10 çağrı anlamına gelir ve örnekleme işlemi bunlardan yalnızca birini iletir. Hedef bileşene göre segmentlere bölen bağımlılıkların doğru sayısını almak için aşağıdaki gibi bir kod kullanın:

dependencies
| summarize sum(itemCount) by target

Bağımlılıkları ilgili isteklerle ilişkilendirmek için birleştirme kullanın:

dependencies
| join (requests) on operation_Id

Verileri boşaltma

Normalde SDK sabit aralıklarla (genellikle 30 sn) veya arabellek dolu olduğunda (genellikle 500 öğe) veri gönderir. Ancak bazı durumlarda, örneğin SDK'yı kapatan bir uygulamada kullanıyorsanız, arabelleği boşaltmak istemeyebilirsiniz.

C#

telemetry.Flush();
// Allow some time for flushing before shutdown.
System.Threading.Thread.Sleep(5000);

Java

telemetry.flush();
//Allow some time for flushing before shutting down
Thread.sleep(5000);

Node.js

telemetry.flush();

işlevi, sunucu telemetri kanalı için zaman uyumsuzdur.

İdeal olarak, uygulamanın kapatma etkinliğinde flush() yöntemi kullanılmalıdır.

Kimliği doğrulanmış kullanıcılar

Bir web uygulamasında kullanıcılar tanımlama bilgileriyle tanımlanır (varsayılan olarak). Bir kullanıcı, uygulamanıza farklı bir makineden veya tarayıcıdan erişen veya tanımlama bilgilerini sildiklerinden birden çok kez sayabilirsiniz.

Kullanıcılar uygulamanıza oturum açsa, tarayıcı kodunda kimliği doğrulanmış kullanıcı kimliğini ayarerek daha doğru bir sayı elde edersiniz:

JavaScript

// Called when my app has identified the user.
function Authenticated(signInId) {
    var validatedId = signInId.replace(/[,;=| ]+/g, "_");
    appInsights.setAuthenticatedUserContext(validatedId);
    ...
}

Bir ASP.NET web MVC uygulamasında, örneğin:

Razor

@if (Request.IsAuthenticated)
{
    <script>
        appInsights.setAuthenticatedUserContext("@User.Identity.Name
            .Replace("\\", "\\\\")"
            .replace(/[,;=| ]+/g, "_"));
    </script>
}

Kullanıcının gerçek oturum açma adını kullanmak gerekli değildir. Yalnızca bu kullanıcı için benzersiz bir kimlik olmalıdır. Boşluk içermesi veya karakterlerden herhangi birini içermesi ,;=| gerekir.

Kullanıcı kimliği ayrıca bir oturum tanımlama bilgisinde ayarlanır ve sunucuya gönderilir. Sunucu SDK'sı yüklüyse, kimliği doğrulanmış kullanıcı kimliği hem istemci hem de sunucu telemetrisinde bağlam özelliklerinin bir parçası olarak gönderilir. Ardından filtre ve arama da 3.

Uygulamanız kullanıcıları hesaplara grupıyorsa, hesap için bir tanımlayıcı da (aynı karakter kısıtlamalarıyla) geçebilirsiniz.

appInsights.setAuthenticatedUserContext(validatedId, accountId);

Bu Ölçüm Gezgini,Kullanıcılar, Kimliği Doğrulanmış ve Kullanıcı hesaplarını sayan bir grafik oluşturabilirsiniz.

Belirli kullanıcı adları ve hesapları olan istemci veri noktalarını da arayabilirsiniz.

Not

.NET Core SDK'deki ApplicationInsightsServiceOptions sınıfındaki EnableAuthenticationTrackingJavaScript özelliği, Application Analizler JavaScript SDK'sı tarafından gönderilen her izleme için kullanıcı adını Auth Kimliği olarak eklemeye gereken JavaScript yapılandırmasını basitleştirmektedir. Bu özellik true olarak ayarlanırsa, ASP.NET Core'daki kullanıcının kullanıcı adı istemci tarafı telemetrisiile birlikte yazdırılır, bu nedenle ASP.NET Core için SDK tarafından zaten ekli olduğu için el ile appInsights.setAuthenticatedUserContext ekleme artık gerekli olmayacaktır. Kimlik Doğrulama Kimliği, .NET Core'daki SDK'nın bunu tanım belirleyecek ve JavaScript API başvurusunda açıklandığı gibi herhangi bir sunucu tarafı telemetrisi için kullanabileceği sunucuya da gönderilir. Ancak, MVC ile aynı şekilde çalışmayan JavaScript ASP.NET Core (SPA web uygulamaları gibi) yine de el ile eklemeniz appInsights.setAuthenticatedUserContext gerekir.

Özellikleri kullanarak verilerinizi filtreleme, arama ve segmentlere bölerek

Özellikleri ve ölçümleri olaylarınıza (ve ölçümlere, sayfa görünümlerine, özel durumlara ve diğer telemetri verilerine) iliştirebilirsiniz.

Özellikler, kullanım raporlarında telemetrinizi filtrelemek için kullanabileceğiniz dize değerleridir. Örneğin, uygulamanız çeşitli oyunlar sağlarsa, hangi oyunların daha popüler olduğunu görmek için her bir etkinliğe oyunun adını iliştirebilirsiniz.

Dize uzunluğu için 8192 sınırı vardır. (Büyük veri öbekleri göndermek için TrackTrace ileti parametresini kullanın.)

Ölçümler, grafiksel olarak sun ölçülen sayısal değerlerdir. Örneğin, elde etmek istediğiniz puanlarda kademeli bir artış olup olamay olduğunu görmek istiyor olabilirsiniz. Graflar, olayla birlikte gönderilen özelliklere göre segmentlere ayırarak farklı oyunlar için ayrı veya yığılmış graflar elde edebilirsiniz.

Ölçüm değerlerinin doğru şekilde görüntülensi için 0'dan büyük veya 0'a eşit olması gerekir.

Kullanabileceğiniz özellik, özellik değeri ve ölçüm sayısıyla ilgili bazı sınırlar vardır.

JavaScript

appInsights.trackEvent({
  name: 'some event',
  properties: { // accepts any type
    prop1: 'string',
    prop2: 123.45,
    prop3: { nested: 'objects are okay too' }
  }
});

appInsights.trackPageView({
  name: 'some page',
  properties: { // accepts any type
    prop1: 'string',
    prop2: 123.45,
    prop3: { nested: 'objects are okay too' }
  }
});

C#

// Set up some properties and metrics:
var properties = new Dictionary <string, string>
    {{"game", currentGame.Name}, {"difficulty", currentGame.Difficulty}};
var metrics = new Dictionary <string, double>
    {{"Score", currentGame.Score}, {"Opponents", currentGame.OpponentCount}};

// Send the event:
telemetry.TrackEvent("WinGame", properties, metrics);

Node.js

// Set up some properties and metrics:
var properties = {"game": currentGame.Name, "difficulty": currentGame.Difficulty};
var metrics = {"Score": currentGame.Score, "Opponents": currentGame.OpponentCount};

// Send the event:
telemetry.trackEvent({name: "WinGame", properties: properties, measurements: metrics});

Visual Basic

' Set up some properties:
Dim properties = New Dictionary (Of String, String)
properties.Add("game", currentGame.Name)
properties.Add("difficulty", currentGame.Difficulty)

Dim metrics = New Dictionary (Of String, Double)
metrics.Add("Score", currentGame.Score)
metrics.Add("Opponents", currentGame.OpponentCount)

' Send the event:
telemetry.TrackEvent("WinGame", properties, metrics)

Java

Map<String, String> properties = new HashMap<String, String>();
properties.put("game", currentGame.getName());
properties.put("difficulty", currentGame.getDifficulty());

Map<String, Double> metrics = new HashMap<String, Double>();
metrics.put("Score", currentGame.getScore());
metrics.put("Opponents", currentGame.getOpponentCount());

telemetry.trackEvent("WinGame", properties, metrics);

Not

Özelliklerde kişisel bilgileri günlüğe almamanızı sağlar.

Özellikleri ve ölçümleri ayarlamanın alternatif yolu

Daha kullanışlısa, bir olayın parametrelerini ayrı bir nesnede toplayabilirsiniz:

var event = new EventTelemetry();

event.Name = "WinGame";
event.Metrics["processingTime"] = stopwatch.Elapsed.TotalMilliseconds;
event.Properties["game"] = currentGame.Name;
event.Properties["difficulty"] = currentGame.Difficulty;
event.Metrics["Score"] = currentGame.Score;
event.Metrics["Opponents"] = currentGame.Opponents.Length;

telemetry.TrackEvent(event);

Uyarı

Track*() işlevini birden çok kez çağıracak şekilde aynı telemetri öğesi örneğini (bu event örnekte) yeniden kullanmayın. Bu durum, telemetri verileri yanlış yapılandırmayla gönderilmeye neden olabilir.

Analytics'te özel ölçümler ve özellikler

Analiz'de,her telemetri kaydının ve customMeasurements customDimensions özniteliklerini özel ölçümler ve özellikler gösterir.

Örneğin, istek telemetrinize "game" adlı bir özellik eklediyebilirsiniz. Bu sorgu farklı "oyun" değerlerinin oluşumlarını sayar ve "score" özel ölçüm ortalamasını gösterir:

requests
| summarize sum(itemCount), avg(todouble(customMeasurements.score)) by tostring(customDimensions.game)

Şunlara dikkat edin:

  • customDimensions veya customMeasurements JSON değerinden bir değer ayıklarken, dinamik türüne sahip olur ve bu nedenle veya olarak tostring todouble yazmalısiniz.
  • örnekleme olasılığını dikkate almak için değil, sum(itemCount) kullansanız count() gerekir.

Zamanlama olayları

Bazen eylem gerçekleştirmenin ne kadar zaman alır olduğunu grafik olarak görmek istersiniz. Örneğin, kullanıcıların bir oyun seçimlerini göz önünde bulundurma sürelerini bilmek istiyor olabilir. Bunun için ölçüm parametresini kullanabilirsiniz.

C#

var stopwatch = System.Diagnostics.Stopwatch.StartNew();

// ... perform the timed action ...

stopwatch.Stop();

var metrics = new Dictionary <string, double>
    {{"processingTime", stopwatch.Elapsed.TotalMilliseconds}};

// Set up some properties:
var properties = new Dictionary <string, string>
    {{"signalSource", currentSignalSource.Name}};

// Send the event:
telemetry.TrackEvent("SignalProcessed", properties, metrics);

Java

long startTime = System.currentTimeMillis();

// Perform timed action

long endTime = System.currentTimeMillis();
Map<String, Double> metrics = new HashMap<>();
metrics.put("ProcessingTime", (double)endTime-startTime);

// Setup some properties
Map<String, String> properties = new HashMap<>();
properties.put("signalSource", currentSignalSource.getName());

// Send the event
telemetry.trackEvent("SignalProcessed", properties, metrics);

Özel telemetri için varsayılan özellikler

Yazdığınız bazı özel olaylar için varsayılan özellik değerlerini ayarlamak istiyorsanız, bunları bir TelemetryClient örneğinde ayarlayabilirsiniz. Bu istemciler, bu istemciden gönderilen her telemetri öğesine eklenir.

C#

using Microsoft.ApplicationInsights.DataContracts;

var gameTelemetry = new TelemetryClient();
gameTelemetry.Context.GlobalProperties["Game"] = currentGame.Name;
// Now all telemetry will automatically be sent with the context property:
gameTelemetry.TrackEvent("WinGame");

Visual Basic

Dim gameTelemetry = New TelemetryClient()
gameTelemetry.Context.GlobalProperties("Game") = currentGame.Name
' Now all telemetry will automatically be sent with the context property:
gameTelemetry.TrackEvent("WinGame")

Java

import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryContext;
...

TelemetryClient gameTelemetry = new TelemetryClient();
TelemetryContext context = gameTelemetry.getContext();
context.getProperties().put("Game", currentGame.Name);

gameTelemetry.TrackEvent("WinGame");

Node.js

var gameTelemetry = new applicationInsights.TelemetryClient();
gameTelemetry.commonProperties["Game"] = currentGame.Name;

gameTelemetry.TrackEvent({name: "WinGame"});

Tek tek telemetri çağrıları, özellik sözlüklerindeki varsayılan değerleri geçersiz kılabilir.

JavaScript Web Istemcileri Için JavaScript telemetri başlatıcıları ' nı kullanın.

Standart koleksiyon modüllerindeki veriler de dahil olmak üzere Tüm telemetrisine özellikler eklemek için, uygulamasını uygulayın ITelemetryInitializer.

Telemetriyi örnekleme, filtreleme ve işleme

SDK 'dan gönderilmeden önce Telemetriyi işlemek için kod yazabilirsiniz. İşleme, HTTP istek koleksiyonu ve bağımlılık koleksiyonu gibi standart telemetri modüllerden gönderilen verileri içerir.

Uygulayarak telemetrisine Özellikler ekleyin ITelemetryInitializer . Örneğin, diğer özelliklerden hesaplanan sürüm numaralarını veya değerleri ekleyebilirsiniz.

Filtreleme , ' yı uygulayarak SDK 'dan gönderilmeden önce Telemetriyi değiştirebilir veya atabilir ITelemetryProcessor . Ne gönderildiğini ve atılacağını denetlersiniz, ancak ölçümleriniz üzerindeki etkiyi hesaba eklemek zorunda olursunuz. Öğeleri nasıl atdığınıza bağlı olarak, ilgili öğeler arasında gezinme özelliğini kaybedebilirsiniz.

Örnekleme , uygulamanızdan portala gönderilen veri hacmini azaltmak için paketlenmiş bir çözümdür. Bu, görünen ölçümleri etkilemeden bunu yapar. Ayrıca, özel durumlar, istekler ve sayfa görünümleri gibi ilgili öğeler arasında gezinerek sorunları tanılama yeteneğinizi etkilemeden bunu yapar.

Daha fazla bilgi edinin.

Telemetri devre dışı bırakılıyor

Telemetri toplamayı ve iletimini dinamik olarak durdurmak ve başlatmak için:

C#

using  Microsoft.ApplicationInsights.Extensibility;

TelemetryConfiguration.Active.DisableTelemetry = true;

Java

telemetry.getConfiguration().setTrackingDisabled(true);

Seçili standart toplayıcıları devre dışı bırakmak için--örneğin, performans SAYAÇLARı, http istekleri veya bağımlılıklar-- ApplicationInsights.configilgili satırları silin veya not edin. Örneğin, kendi TrackRequest verilerinizi göndermek istiyorsanız bunu yapabilirsiniz.

Node.js

telemetry.config.disableAppInsights = true;

Seçili standart toplayıcıları devre dışı bırakmak için--örneğin, performans SAYAÇLARı, http istekleri veya bağımlılıklar--başlatma SıRASıNDA, SDK başlatma kodunuzda zincir yapılandırma yöntemleri:

applicationInsights.setup()
    .setAutoCollectRequests(false)
    .setAutoCollectPerformance(false)
    .setAutoCollectExceptions(false)
    .setAutoCollectDependencies(false)
    .setAutoCollectConsole(false)
    .start();

Başlatma sonrasında bu toplayıcıları devre dışı bırakmak için yapılandırma nesnesini kullanın: applicationInsights.Configuration.setAutoCollectRequests(false)

Geliştirici modu

Hata ayıklama sırasında, sonuçları hemen görebilmeniz için Telemetriyi ardışık düzen aracılığıyla elde etmeniz yararlı olur. Telemetriyle ilgili sorunları izlemenize yardımcı olan ek iletiler de alırsınız. Uygulamanızı yavaşlatabileceğinden, üretimde devre dışı bırakın.

C#

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;

Visual Basic

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = True

Node.js

Node.js için, ile iç günlük kaydını etkinleştirerek setInternalLogging ve ' ı ayarlayarak Geliştirici modunu etkinleştirebilirsiniz maxBatchSize . Bu, telemetrinizin toplandıktan hemen sonra gönderilmesini sağlar.

applicationInsights.setup("ikey")
  .setInternalLogging(true, true)
  .start()
applicationInsights.defaultClient.config.maxBatchSize = 0;

Seçili özel telemetri için izleme anahtarı ayarlanıyor

C#

var telemetry = new TelemetryClient();
telemetry.InstrumentationKey = "---my key---";
// ...

Dinamik izleme anahtarı

geliştirme, test ve üretim ortamlarından telemetriyi karışmamak için, ortama bağlı olarak ayrı Application Insights kaynakları oluşturabilir ve anahtarlarını değiştirebilirsiniz.

Yapılandırma dosyasından izleme anahtarını almak yerine kodunuzda bu ayarı yapabilirsiniz. bir ASP.NET hizmetinde global. aspx. cs gibi bir başlatma yönteminde anahtarı ayarlayın:

C#

protected void Application_Start()
{
    Microsoft.ApplicationInsights.Extensibility.
    TelemetryConfiguration.Active.InstrumentationKey =
        // - for example -
        WebConfigurationManager.Settings["ikey"];
    ...
}

JavaScript

appInsights.config.instrumentationKey = myKey;

Web sayfalarında, betik içine yazmak yerine Web sunucusunun durumundan bir şekilde ayarlamak isteyebilirsiniz. örneğin, bir ASP.NET uygulamasında oluşturulan bir web sayfasında:

Razor 'de JavaScript

<script type="text/javascript">
// Standard Application Insights webpage script:
var appInsights = window.appInsights || function(config){ ...
// Modify this part:
}({instrumentationKey:  
    // Generate from server property:
    @Microsoft.ApplicationInsights.Extensibility.
        TelemetryConfiguration.Active.InstrumentationKey;
}) // ...
    String instrumentationKey = "00000000-0000-0000-0000-000000000000";

    if (instrumentationKey != null)
    {
        TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
    }

TelemetryContext

TelemetryClient, tüm telemetri verileriyle birlikte gönderilen değerleri içeren bir Context özelliğine sahiptir. Bunlar normalde standart telemetri modülleri tarafından ayarlanır, ancak bunları kendiniz de ayarlayabilirsiniz. Örnek:

telemetry.Context.Operation.Name = "MyOperationName";

Bu değerlerden herhangi birini kendiniz ayarlarsanız, değerlerinizin ve standart değerlerin karıştırımaması için ApplicationInsights.configilgili satırı kaldırmayı göz önünde bulundurun.

  • Bileşen: uygulama ve sürümü.
  • Cihaz: uygulamanın çalıştığı cihazla ilgili veriler. (Web Apps 'te, telemetrinin gönderildiği sunucu veya istemci aygıtıdır.)
  • ınstrumentationkey: Azure 'da telemetriyi göründüğü Application Insights kaynak. Genellikle ApplicationInsights.config üzerinden alınır.
  • Konum: cihazın coğrafi konumu.
  • İşlem: Web Apps 'TE geçerli http isteği. Diğer uygulama türlerinde, bunu olayları gruplamak için de ayarlayabilirsiniz.
    • ID: farklı olayları ilişkilendiren oluşturulmuş bir değer, böylece tanılama aramasında herhangi bir olayı inceleyebileceğiniz ilgili öğeleri bulabilirsiniz.
    • Ad: bir tanımlayıcı, genellikle http isteğinin URL 'si.
    • Syntheticsource: null veya boş değilse, isteğin kaynağının bir robot veya Web testi olarak tanımlandığını gösteren bir dize. Varsayılan olarak, Ölçüm Gezgini hesaplamalarında çıkarılır.
  • Oturum: kullanıcının oturumu. KIMLIĞI, Kullanıcı bir süredir etkin olmadığında değiştirilen bir üretilen değere ayarlanır.
  • Kullanıcı: Kullanıcı bilgileri.

Sınırlar

Uygulama başına ölçüm sayısı ve olay başına, diğer bir deyişle, izleme anahtarı başına bazı sınırlar vardır. Limitler seçtiğiniz fiyatlandırma planına bağlıdır.

Kaynak Varsayılan limit Not
Günlük toplam veri 100 GB Bir uç ayarlayarak verileri azaltabilirsiniz. Daha fazla veri gerekiyorsa, portalda 1.000 GB 'a kadar olan limiti artırabilirsiniz. 1.000 GB 'tan büyük kapasiteler için adresine e-posta gönderin AIDataCap@microsoft.com .
Azaltma 32.000 olay/saniye Sınır bir dakika içinde ölçülür.
Veri saklama günlükleri 30-730 gün Bu kaynak Günlükleriçindir.
Veri saklama ölçümleri 90 gün Bu kaynak Ölçüm Gezginiiçindir.
Çok adımlı kullanılabilirlik testi ayrıntılı sonuçlarını saklama 90 gün Bu kaynak her adımın ayrıntılı sonuçlarını verir.
Maksimum telemetri öğesi boyutu 64 kB
Toplu iş başına maksimum telemetri öğesi 64 K
Özellik ve ölçüm adı uzunluğu 150 Bkz. tür şemaları.
Özellik değeri dize uzunluğu 8,192 Bkz. tür şemaları.
İzleme ve özel durum iletisi uzunluğu 32.768 Bkz. tür şemaları.
Uygulama başına kullanılabilirlik testi sayısı 100
Profil Oluşturucu veri saklama 5 gün
Her gün gönderilen Profil Oluşturucu verileri 10 GB

Daha fazla bilgi için bkz. Application Insights fiyatlandırma ve kotaları hakkında.

Veri hızı sınırına ulaşmaktan kaçınmak için örneklemekullanın.

Verilerin ne kadar süreyle tutulacağını öğrenmek için bkz. veri saklama ve gizlilik.

Başvuru belgeleri

SDK kodu

Sorular

  • Hangi özel durumlar Track_ () çağrı throw?

    Yok. Bunları try-catch yan tümcelerinde sarmalısınız. SDK sorunlarla karşılaşırsa, hata ayıklama konsolu çıkışında iletileri günlüğe kaydeder ve iletiler tanılama araması ' nda ile alıyorsa.

  • Portaldan veri almak için bir REST API var mı?

    Evet, veri erişimi API 'si. verilerin ayıklanmasına yönelik diğer yollar analiz 'ten Power BI ve sürekli dışarı aktarmayaaktarma içerir.

Sonraki adımlar