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

Kullanıcıların uygulamayla ne yaptığını öğrenmek veya sorunları tanılamaya yardımcı olmak için uygulamanıza birkaç kod satırı ekleyin. Cihaz ve masaüstü uygulamalarından, web istemcilerinden ve web sunucularından telemetri gönderebilirsiniz. Özel olayları ve ölçümleri ve standart telemetrinin kendi sürümlerini göndermek için Uygulama Analizler çekirdek telemetri API'sini kullanın. Bu API, standart Uygulama Analizler veri toplayıcılarının kullandığı API ile aynıdır.

Not

31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.

API özeti

Çekirdek API, (yalnızca.NET) gibi GetMetric birkaç varyasyon dışında tüm platformlarda tekdüzendir.

Yöntem Kullanıldığı yerler
TrackPageView Sayfalar, ekranlar, bölmeler 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 olmayan kuyruk uzunlukları gibi performans ölçümleri.
TrackException Tanılama için özel durumları günlüğe kaydetme. Diğer olaylarla ilgili olarak nerede oluştuklarını izleme ve yığın izlemelerini inceleme.
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 de 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

Uygulama Analizler SDK'sı üzerinde henüz bir başvurunuz yoksa:

TelemetryClient örneği alma

Örneğini TelemetryClient alın (web sayfalarında JavaScript hariç):

ASP.NET Core uygulamaları ve .NET/.NET Core uygulamaları için HTTP/Çalışan Olmayan uygulamalar için, ilgili belgelerinde açıklandığı gibi bağımlılık ekleme kapsayıcısından örneğini TelemetryClient alın.

Azure İşlevleri v2+ veya Azure WebJobs v3+ kullanıyorsanız bkz. İzleme Azure İşlevleri.

C#

private TelemetryClient telemetry = new TelemetryClient();

Bu yöntemin kullanımdan kaldırıldığını bildiren bir ileti görürseniz daha fazla bilgi için bkz. microsoft/Application Analizler-dotnet#1152.

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 projeleri için gelen HTTP istekleri otomatik olarak yakalanır. Uygulamanızın diğer modülleri için daha fazla örneği TelemetryClient oluşturmak isteyebilirsiniz. Örneğin, ara yazılım sınıfınızda iş mantığı olaylarını raporlamak için bir TelemetryClient örneğiniz olabilir. Makineyi tanımlamak için ve DeviceId gibi UserId özellikleri ayarlayabilirsiniz. Bu bilgiler, örneğin gönderdiği tüm olaylara eklenir.

C#

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

Java

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

Node.js projelerinde, yeni bir örnek oluşturmak için kullanabilirsiniz new applicationInsights.TelemetryClient(instrumentationKey?) . Bu yaklaşımı yalnızca tekliden defaultClientyalıtılmış yapılandırma gerektiren senaryolar için öneririz.

TrackEvent

Uygulama Analizler'nde özel olay, Ölçüm Gezgini'nde toplu sayı olarak ve Tanılama Arama'datek tek oluşumlar olarak görüntüleyebileceğiniz bir veri noktasıdır. (MVC veya diğer "olaylar" çerçevesiyle ilgili değildir.)

Çeşitli olayları saymak için kodunuza çağrılar ekleyin TrackEvent . Örneğin, kullanıcıların belirli bir özelliği ne sıklıkta seçtiğini izlemek isteyebilirsiniz. Ya da belirli hedeflere ne sıklıkta ulaştıklarını veya belirli hata türlerini yaptıklarını bilmek isteyebilirsiniz.

Örneğin, bir oyun uygulamasında, bir kullanıcı oyunu her kazandığında bir etkinlik 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"});

Log Analytics'te özel olaylar

Telemetriyi Uygulama Analizler Günlükleri sekmesindekitabloda veya kullanım deneyiminde bulabilirsinizcustomEvents. Olaylar Veya Click Analytics Otomatik toplama eklentisinden trackEvent(..)gelebilir.

Örnekleme işlemi devam ederse özelliği değerinden itemCount1büyük bir değer gösterir. Örneğin, itemCount==10 örnekleme işleminin 10 çağrısından trackEvent()yalnızca birini iletmiş olduğu anlamına gelir. Özel olayların doğru sayısını almak için gibi customEvents | summarize sum(itemCount)bir kod kullanın.

Not

itemCount değerinin en az bir değeri vardır; kaydın kendisi bir girdiyi temsil eder.

GetMetric

.NET ve .NET Core uygulamaları için yerel olarak önceden toplanmış ölçümleri yakalamak üzere çağrıyı GetMetric() etkili bir şekilde kullanmayı öğrenmek için bkz . .NET ve .NET Core'da özel ölçüm koleksiyonu.

TrackMetric

Not

Microsoft.ApplicationInsights.TelemetryClient.TrackMetric ölçümleri göndermek için tercih edilen yöntem değildir. Ölçümler gönderilmeden önce her zaman bir zaman aralığında önceden toplanmalıdır. SDK ön toplama özelliklerine GetMetric(..) erişmek için bir ölçüm nesnesi almak için aşırı yüklemelerden birini kullanın.

Kendi ön toplama mantığınızı uyguluyorsanız, elde edilen toplamları göndermek için yöntemini kullanabilirsiniz TrackMetric() . Uygulamanız zaman içinde toplama olmadan her durumda ayrı bir telemetri öğesi göndermeyi gerektiriyorsa, büyük olasılıkla olay telemetrisi için bir kullanım örneğine sahipsinizdir. Bkz. TelemetryClient.TrackEvent (Microsoft.ApplicationInsights.DataContracts.EventTelemetry).

Uygulama Analizler belirli olaylara eklenmemiş ölçümleri grafikleyebilir. Örneğin, bir kuyruk uzunluğunu düzenli aralıklarla izleyebilirsiniz. Ölçümlerle, tek tek ölçümler varyasyonlardan ve eğilimlerden daha az ilgi çekicidir ve bu nedenle istatistiksel grafikler kullanışlıdır.

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

  • Tek değer. Uygulamanızda her ölçüm gerçekleştirdiğinizde, ilgili değeri Uygulama Analizler'ne gönderirsiniz.

    Örneğin, kapsayıcıdaki öğe sayısını açıklayan bir ölçüme sahip olduğunuzu varsayalım. Belirli bir süre boyunca, kapsayıcıya önce üç öğe koyarsınız ve sonra iki öğeyi kaldırırsınız. Buna göre, iki kez ararsın TrackMetric . İlk olarak değerini geçirir 3 ve sonra değerini -2geçirirsiniz. Uygulama Analizler sizin için her iki değeri de depolar.

  • Toplama. Ölçümlerle çalışırken, her ölçüm nadiren ilgi çekicidir. Bunun yerine, belirli bir zaman aralığında gerçekleşenlerin özeti önemlidir. Böyle bir özet toplama olarak adlandırılır.

    Yukarıdaki örnekte, bu dönemin toplam ölçüm toplamı ve 1 ölçüm değerlerinin sayısı şeklindedir 2. Toplama yaklaşımını kullandığınızda, zaman aralığı başına yalnızca bir kez çağırır TrackMetric ve toplama değerlerini gönderirsiniz. Uygulama Analizler daha az veri noktası gönderirken ilgili tüm bilgileri toplamaya devam ederek maliyet ve performans ek yükünü önemli ölçüde azaltabileceğinden bu yaklaşımı öneririz.

Tek değer örnekleri

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.Sum = 42.3;
telemetryClient.TrackMetric(sample);

Java

telemetry.trackMetric("queueLength", 42.0);

Node.js

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

Log Analytics'te özel ölçümler

Telemetriyi Application Analizler Analytics'teki customMetricstabloda bulabilirsiniz. Her satır, uygulamanızdaki bir çağrıyı trackMetric(..) temsil eder.

  • valueSum: Ölçümlerin toplamı. Ortalama değeri almak için değerine bölün valueCount.
  • valueCount: Bu trackMetric(..) çağrıda toplanan ölçülerin sayısı.

Not

valueCount değerinin en az bir değeri vardır; kaydın kendisi bir girdiyi temsil eder.

Sayfa görünümleri

Bir cihaz veya web sayfası uygulamasında, her ekran veya sayfa yüklendiğinde sayfa görünümü telemetrisi varsayılan olarak gönderilir. Ancak, sayfa görünümlerini daha fazla veya farklı zamanlarda izlemek için varsayılanı değiştirebilirsiniz. Örneğin, sekmeleri veya bölmeleri görüntüleyen bir uygulamada, kullanıcı yeni bir bölme açtığında sayfayı izlemek isteyebilirsiniz.

Kullanıcı ve oturum verileri, sayfa görünümleri ile birlikte özellik olarak gönderilir, böylece sayfa görünümü telemetrisi olduğunda kullanıcı ve oturum grafikleri canlanır.

Ö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ında birkaç sekmeniz varsa 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 isteği gönderdiği zamandan tarayıcının sayfa yükleme olayı çağrılana kadar ölçülür.

Bunun yerine şunları yapabilirsiniz:

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şlatma ve durdurma çağrılarını ilişkilendirir. Varsayılan olarak geçerli sayfa adını kullanır.

Ölçüm Gezgini'nde görüntülenen sonuçta elde edilen sayfa yükleme süreleri, başlatma ve durdurma çağrıları arasındaki aralıktan türetilir. Aslında hangi zaman aralığına zaman ayırdığınız size bağlı.

Log Analytics'te sayfa telemetrisi

Log Analytics'te iki tablo tarayıcı işlemlerinden verileri gösterir:

  • pageViews: URL ve sayfa başlığı hakkındaki verileri içerir.
  • browserTimings: Gelen verileri işlemek için geçen süre gibi istemci performansıyla ilgili verileri içerir.

Tarayıcının farklı sayfaları işlemesinin ne kadar sürdüğünü bulmak için:

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

Farklı tarayıcıların popülerliğini keşfetmek için:

pageViews
| summarize count() by client_Browser

Sayfa görünümlerini AJAX çağrılarıyla 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 kullanır TrackRequest .

Web hizmeti modülünün çalışmadığı bir bağlamda isteklerin benzetimini yapmak istiyorsanız kendiniz de çağırabilirsiniz.

İstek telemetrisi göndermenin önerilen yolu, isteğin bir işlem bağlamı görevi gördüğü yerdir.

İşlem bağlamı

Telemetri öğelerini işlem bağlamıyla ilişkilendirerek birbiriyle ilişkilendirebilirsiniz. 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 bölümünde, işlem kimliğini kullanarak istekle ilişkili tüm olayları kolayca bulabilirsiniz.

Bağıntı hakkında daha fazla bilgi için bkz. Uygulama Analizler telemetri bağıntısı.

Telemetriyi el ile izlediğinizde, telemetri bağıntısını sağlamanın en kolay yolu şu deseni kullanmaktır:

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.

İşlem bağlamı ayarlamanın yanı sıra, StartOperation belirttiğiniz türde bir telemetri öğesi oluşturur. İşlemi attığınızda veya açıkça çağırırsanız StopOperationtelemetri öğesini gönderir. Telemetri türü olarak kullanırsanız RequestTelemetry , süresi başlangıç ve durdurma arasındaki zamanlanmış aralamaya ayarlanır.

bir işlem kapsamında bildirilen telemetri öğeleri, böyle bir işlemin alt öğeleri haline gelir. İşlem bağlamları iç içe yerleştirilmiş olabilir.

Arama'da, işlem bağlamı İlgili Öğeler listesini oluşturmak için kullanılır.

İlgili Öğeler listesini gösteren ekran görüntüsü.

Özel işlemleri izleme hakkında daha fazla bilgi için bkz. Application Analizler .NET SDK ile özel işlemleri izleme.

Log Analytics'teki istekler

Application Analizler Analytics'terequests istekler tabloda gösterilir.

Örnekleme işlemi devam ederse özelliği değerinden itemCount1büyük bir değer gösterir. Örneğin, itemCount==10 örnekleme işleminin 10 çağrısından trackRequest()yalnızca birini iletmiş olduğu anlamına gelir. İsteklerin doğru sayısını ve istek adlarına göre segmentlere ayrılmış ortalama süreyi almak için aşağıdaki gibi bir kod kullanın:

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

TrackException

Uygulama Analizler özel durumlarını gönderme:

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 açıkça çağırmanız TrackException gerekmez:

  • ASP.NET: Özel durumları yakalamak için kod yazın.
  • Java EE: Özel durumlar otomatik olarak yakalanıyor.
  • JavaScript: Özel durumlar otomatik olarak yakalanıyor. Otomatik koleksiyonu devre dışı bırakmak istiyorsanız, web sayfalarınıza eklediğiniz JavaScript (Web) SDK Yükleyici Betiğine bir satır ekleyin:
({
    instrumentationKey: "your key",
    disableExceptionTracking: true
})

Log Analytics'teki özel durumlar

Application Analizler Analytics'teexceptions tabloda özel durumlar gösterilir.

Örnekleme işlemi devam ederse özelliği değerinden itemCount1büyük bir değer gösterir. Örneğin, itemCount==10 örnekleme işleminin 10 çağrısından trackException()yalnızca birini iletmiş olduğu anlamına gelir. Özel durum türüne göre segmentlere ayrılmış özel durumların doğru sayısını almak için aşağıdaki gibi bir kod kullanın:

exceptions
| summarize sum(itemCount) by type

Önemli yığın bilgilerinin çoğu zaten ayrı değişkenlere ayıklanır, ancak daha fazlasını elde etmek için yapıyı details ayırabilirsiniz. Bu yapı dinamik olduğundan, sonucu beklediğiniz türe atamanız gerekir. Örneğin:

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

Özel durumları ilgili istekleriyle ilişkilendirmek için birleştirme kullanın:

exceptions
| join (requests) on operation_Id

TrackTrace

Uygulama Analizler'ne "içerik haritası izi" göndererek sorunları tanılamaya yardımcı olmak için kullanınTrackTrace. Tanılama verilerinin öbeklerini gönderebilir ve Tanılama Arama'da inceleyebilirsiniz.

.NET Günlük bağdaştırıcılarında, portala üçüncü taraf günlükleri göndermek için bu API'yi kullanın.

Java'da, Application Analizler Java aracısı günlükleri otomatik olarak alır ve 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öntem girme veya bırakma gibi bir tanılama olayını günlüğe kaydetme.

Parametre Açıklama
message Tanılama verileri. Bir isimden çok daha uzun olabilir.
properties Dize ile dizenin eşle. Portaldaki özel durumları filtrelemek için daha fazla veri kullanılır. Varsayılan olarak boş olur.
severityLevel Desteklenen değerler: SeverityLevel.ts.

İleti içeriğinde arama yapabilirsiniz, ancak özellik değerlerinin aksine, bu içeriğe filtre ekleyemezsiniz.

üzerindeki message boyut sınırı, özelliklerdeki sınırdan çok daha yüksektir. Bunun bir avantajı TrackTrace , iletiye görece uzun veriler koyabilmenizdir. Örneğin, POST verilerini orada kodlayabilirsiniz.

İletinize bir önem düzeyi de ekleyebilirsiniz. Ayrıca, diğer telemetrilerde olduğu gibi, farklı izleme kümelerini filtrelemenize veya aramanıza yardımcı olmak için özellik değerleri ekleyebilirsiniz. Örneğin:

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 ait tüm iletileri kolayca filtreleyebilirsiniz.

Log Analytics'teki izlemeler

Application Analizler Analytics'tetraces, tabloda gösterilecek çağrılarTrackTrace.

Örnekleme işlemi devam ederse özelliği değerinden itemCount1büyük bir değer gösterir. Örneğin, itemCount==10 örnekleme işleminin 10 çağrısından trackTrace()yalnızca birini iletmiş olduğu anlamına gelir. İzleme çağrılarının doğru sayısını almak için gibi traces | summarize sum(itemCount)bir kod kullanın.

TrackDependency

Dış kod parçasına TrackDependency yapılan çağrıların yanıt sürelerini ve başarı oranlarını izlemek için çağrıyı kullanın. Sonuçlar portaldaki bağımlılık grafiklerinde görünür. Bağımlılık çağrısının yapıldığı her yere aşağıdaki kod parçacığı eklenmelidir.

Not

.NET ve .NET Core için alternatif olarak, bağıntı TelemetryClient.StartOperation için gereken özellikleri ve başlangıç zamanı ve süre gibi diğer bazı özellikleri dolduran DependencyTelemetry (uzantı) yöntemini kullanabilirsiniz, bu nedenle aşağıdaki örneklerde olduğu gibi özel bir zamanlayıcı oluşturmanız gerekmez. Daha fazla bilgi için Application Analizler .NET SDK ile özel işlemleri izleme bölümündeki 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'larının, veritabanları ve REST API'leri gibi belirli bağımlılık çağrılarını otomatik olarak bulup izleyen bir bağımlılık modülü içerdiğini unutmayın. Modülün çalışması için sunucunuza bir aracı yüklemeniz gerekir.

Java'da, Application Analizler Java aracısı kullanılarak birçok bağımlılık çağrısı otomatik olarak izlenebilir.

Otomatik izlemenin yakalamadığı çağrıları izlemek istiyorsanız bu çağrıyı kullanırsınız.

C# dilinde standart bağımlılık izleme modülünü kapatmak için Application Analizler.config dosyasını düzenleyin ve başvurusu DependencyCollector.DependencyTrackingTelemetryModulesilin. Java için bkz . Belirli otomatik toplanan telemetri verilerini gizleme.

Log Analytics'teki bağımlılıklar

Application Analizler Analytics'te dependencies aramalartrackDependency tabloda gösterilir.

Örnekleme işlemi devam ederse özelliği itemCount 1'den büyük bir değer gösterir. Örneğin, itemCount==10 örnekleme işleminin 10 çağrısından trackDependency()yalnızca birini iletmiş olduğu anlamına gelir. Hedef bileşene göre segmentlere ayrılmış doğru bağımlılık 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 istekleriyle ilişkilendirmek için birleştirme kullanın:

dependencies
| join (requests) on operation_Id

Verileri temizleme

Normalde SDK, verileri sabit aralıklarla ( genellikle 30 saniye) veya arabellek dolu olduğunda (genellikle 500 öğedir) gönderir. Bazı durumlarda, arabelleği boşaltmak isteyebilirsiniz. Sdk'nın kapanan bir uygulamada kullanılması buna örnek olarak verilmiştir.

.NET

kullanırken Flush()şu deseni öneririz:

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

kullanırken FlushAsync()şu deseni öneririz:

await telemetryClient.FlushAsync()
// No need to sleep

Telemetrinin kaybolmaması için uygulama kapatma işleminin bir parçası olarak her zaman temizlemenizi öneririz.

Java

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

Node.js

telemetry.flush();

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

Not

Java ve JavaScript SDK'ları, uygulama kapatılırken otomatik olarak boşaltılır.

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

Bir web uygulamasında kullanıcılar varsayılan olarak tanımlama bilgileriyle tanımlanır. Uygulamanıza farklı bir makineden veya tarayıcıdan erişen veya tanımlama bilgilerini silen bir kullanıcı birden çok kez sayılabilir.

Kullanıcılar uygulamanızda oturum açarsa, tarayıcı kodunda kimliği doğrulanmış kullanıcı kimliğini ayarlayarak daha doğru bir sayı elde edebilirsiniz:

JavaScript

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

ASP.NET bir 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ıya özgü bir kimlik olmalıdır. Boşluk veya karakterlerden ,;=|herhangi birini içermemelidir.

Kullanıcı kimliği de 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 telemetrisinin bağlam özelliklerinin bir parçası olarak gönderilir. Daha sonra filtreleyebilir ve üzerinde arama yapabilirsiniz.

Uygulamanız kullanıcıları hesaplar halinde gruplandırırsa, hesap için bir tanımlayıcı da geçirebilirsiniz. Aynı karakter kısıtlamaları uygulanır.

appInsights.setAuthenticatedUserContext(validatedId, accountId);

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

Ayrıca, belirli kullanıcı adları ve hesapları olan istemci veri noktalarını da arayabilirsiniz .

Not

.NET Core SDK'sı içindeki Application Analizler ServiceOptions sınıfındaki EnableAuthenticationTrackingJavaScript özelliği, Application Analizler JavaScript SDK'sı tarafından gönderilen her izleme için kullanıcı adını Kimlik Doğrulama Kimliği olarak eklemek için gereken JavaScript yapılandırmasını basitleştirir.

Bu özellik olarak trueayarlandığında, ASP.NET Core'daki kullanıcının kullanıcı adı, istemci tarafı telemetrisiyle birlikte yazdırılır. Bu nedenle, ASP.NET Core için SDK tarafından zaten eklendiğinden el ile eklemeye appInsights.setAuthenticatedUserContext gerek kalmaz. Kimlik Doğrulama Kimliği, JavaScript API başvurusunda açıklandığı gibi .NET Core'daki SDK'nın bunu belirleyeceği ve sunucu tarafı telemetri için kullanacağı sunucuya da gönderilir.

SPA web uygulamaları gibi ASP.NET Core MVC ile aynı şekilde çalışmayan JavaScript uygulamaları için el ile eklemeniz appInsights.setAuthenticatedUserContext gerekir.

Özellikleri kullanarak verilerinizi filtreleme, arama ve segmentlere ayırma

Olaylarınıza, ölçümlerinize, sayfa görünümlerinize, özel durumlarınıza ve diğer telemetri verilerinize özellikler ve ölçümler ekleyebilirsiniz.

Özellikler , kullanım raporlarında telemetrinizi filtrelemek için kullanabileceğiniz dize değerleridir. Örneğin, uygulamanız birkaç oyun sağlıyorsa, hangi oyunların daha popüler olduğunu görebilmek için oyunun adını her etkinliğe ekleyebilirsiniz.

Dize uzunluğu 8.192 sınırı vardır. Büyük veri öbekleri göndermek istiyorsanız, ileti parametresini TrackTracekullanın.

Ölçümler , grafik olarak sunulabilen sayısal değerlerdir. Örneğin, oyuncularınızın elde ettiği puanlarda kademeli bir artış olup olmadığını görmek isteyebilirsiniz. Grafikler, farklı oyunlar için ayrı veya yığılmış grafikler elde edebilmeniz için olayla birlikte gönderilen özelliklere göre segmentlere ayrılabilir.

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

Kullanabileceğiniz özelliklerin, özellik değerlerinin ve ölçümlerin 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 kaydetmediğinizden emin olun.

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

Daha uygunsa, 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ı

Aynı telemetri öğesi örneğini (event bu örnekte) birden çok kez çağırmak Track*() için yeniden kullanma. Bu uygulama, telemetrinin yanlış yapılandırmayla gönderilmesine neden olabilir.

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

Log Analytics'te özel ölçümler ve özellikler, her telemetri kaydının customMeasurements ve customDimensions özniteliklerinde gösterilir.

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

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

Şunlara dikkat edin:

Zamanlama olayları

Bazen eylem gerçekleştirmenin ne kadar sürdüğünü grafiğini çizersiniz. Örneğin, kullanıcıların bir oyundaki seçimleri ne kadar süreyle dikkate alacağını bilmek isteyebilirsiniz. Bu bilgileri almak için ölçüm parametresini kullanın.

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 örnekte ayarlayın. Bunlar, 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ı, kendi ö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 telemetriye özellikler eklemek için uygulayınITelemetryInitializer.

Örnek, filtre ve işlem telemetrisi

Bkz. Uygulama Analizler SDK'sında telemetriyi filtreleme ve ön işleme.

Telemetriyi devre dışı bırakma

Telemetrinin toplanmasını ve iletimini dinamik olarak durdurmak ve başlatmak için:

C#

using  Microsoft.ApplicationInsights.Extensibility;

TelemetryConfiguration.Active.DisableTelemetry = true;

Java

telemetry.getConfiguration().setTrackingDisabled(true);

Performans sayaçları, HTTP istekleri veya bağımlılıklar gibi seçili standart toplayıcıları devre dışı bırakmak için Application Analizler.config içindeki ilgili satırları silin veya açıklama satırı yapın. Örnek olarak kendi TrackRequest verilerinizi göndermek isteyebilirsiniz.

Node.js

telemetry.config.disableAppInsights = true;

Performans sayaçları, HTTP istekleri veya bağımlılıklar gibi seçili standart toplayıcıları başlatma sırasında devre dışı bırakmak için yapılandırma yöntemlerini SDK başlatma kodunuzla zincirleyin.

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

Başlatmadan sonra bu toplayıcıları devre dışı bırakmak için Configuration nesnesini kullanın: applicationInsights.Configuration.setAutoCollectRequests(false).

Geliştirici modu

Hata ayıklama sırasında, sonuçları hemen görebilmeniz için telemetrinizin işlem hattı üzerinden hızlandırılması yararlı olur. Ayrıca telemetriyle ilgili sorunları izlemenize yardımcı olan başka iletiler de alırsınız. Uygulamanızı yavaşlatabileceğinden üretim ortamında kapatın.

C#

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;

Visual Basic

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = True

Node.js

Node.js için, aracılığıyla iç günlüğü setInternalLogging etkinleştirerek ve olarak ayarlayarak maxBatchSize0geliştirici modunu etkinleştirebilirsiniz. Bu, telemetrinizin toplandığı anda gönderilmesine neden olur.

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

Seçili özel telemetri için izleme anahtarını ayarlama

C#

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

Dinamik izleme anahtarı

Geliştirme, test ve üretim ortamlarından gelen telemetri verilerinin karıştırılmasını önlemek için, ortama bağlı olarak ayrı Uygulama Analizler kaynakları oluşturabilir ve anahtarlarını değiştirebilirsiniz.

İzleme anahtarını yapılandırma dosyasından almak yerine kodunuzda ayarlayabilirsiniz. Anahtarı ASP.NET hizmeti gibi global.aspx.cs bir başlatma yönteminde 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, bunu tam anlamıyla betikte kodlamak yerine web sunucusunun durumundan ayarlamak isteyebilirsiniz. Örneğin, ASP.NET uygulamasında oluşturulan bir web sayfasında:

Razor'da 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. Örneğin:

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

Bu değerlerden herhangi birini kendiniz ayarlarsanız, değerlerinizle standart değerlerin karıştırılmaması için Application Analizler.config dosyasından ilgili 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 uygulamalarında, telemetrinin gönderildiği sunucu veya istemci cihazıdır.
  • InstrumentationKey: Azure'da telemetrinin görüntülendiği Uygulama Analizler kaynağı. Genellikle uygulamasından ApplicationInsights.configalınır.
  • Konum: Cihazın coğrafi konumu.
  • İşlem: Web uygulamalarında geçerli HTTP isteği. Diğer uygulama türlerinde bu değeri olayları birlikte gruplandıracak şekilde ayarlayabilirsiniz.
    • Kimlik: Tanılama Arama'da herhangi bir olayı incelediğinizde ilgili öğeleri bulabilmeniz için farklı olayları ilişkilendiren oluşturulan bir değer.
    • Ad: Tanımlayıcı, genellikle HTTP isteğinin URL'si.
    • SyntheticSource: Null veya boş değilse, isteğin kaynağının robot veya web testi olarak tanımlandığını belirten bir dize. Varsayılan olarak, Ölçüm Gezgini'ndeki hesaplamaların dışında tutulur.
  • Oturum: Kullanıcının oturumu. Kimlik, kullanıcı bir süredir etkin olmadığında değiştirilen, oluşturulan bir değere ayarlanır.
  • Kullanıcı: Kullanıcı bilgileri.

Sınırlar

Uygulama başına ölçüm ve olay sayısı ,yani 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 Maksimum sınır Notlar
Günlük toplam veri 100 GB Desteğe ulaşın. Verileri azaltmak için bir üst sınır ayarlayabilirsiniz. Daha fazla veriye ihtiyacınız varsa portaldaki sınırı 1.000 GB'a kadar artırabilirsiniz. 1.000 GB'tan büyük kapasiteler için adresine AIDataCap@microsoft.come-posta gönderin.
Azaltma 32.000 olay/saniye Desteğe ulaşın. Sınır bir dakika içinde ölçülür.
Veri saklama günlükleri 30 ile 730 gün 730 gün Bu kaynak Günlükler içindir.
Veri saklama ölçümleri 90 gün 90 gün Bu kaynak Ölçüm Gezgini içindir.
Kullanılabilirlik çok adımlı test ayrıntılı sonuç saklama 90 gün 90 gün Bu kaynak her adımın ayrıntılı sonuçlarını verir.
En büyük telemetri öğesi boyutu 64 KB 64 KB
Toplu iş başına en fazla telemetri öğesi sayısı 64,000 64,000
Özellik ve ölçüm adı uzunluğu 150 150 Bkz. tür şemaları.
Özellik değeri dize uzunluğu Kategori 8,192 Kategori 8,192 Bkz. tür şemaları.
İzleme ve özel durum iletisi uzunluğu 32,768 32,768 Bkz. tür şemaları.
Uygulama Analizler kaynağı başına kullanılabilirlik testleri sayısı 100 100
Profil Oluşturucu ve Anlık Görüntü veri saklama İki hafta Desteğe başvurun. Maksimum saklama sınırı altı aydır.
Günlük gönderilen profil oluşturucu verileri Sınırsız Sınır yok.
Günlük gönderilen anlık görüntü verileri İzlenen uygulama başına günde 30 anlık görüntü Sınır yok. Uygulama başına toplanan anlık görüntü sayısı yapılandırma aracılığıyla değiştirilebilir.

Fiyatlandırma ve kotalar hakkında daha fazla bilgi için bkz. Uygulama Analizler faturalama.

Veri hızı sınırına çarpmamak için örneklemeyi kullanın.

Verilerin ne kadar süreyle tutulduğunu belirlemek için bkz . Veri saklama ve gizlilik.

Başvuru belgeleri

SDK kodu

Sık sorulan sorular

Bu bölüm, sık sorulan soruların yanıtlarını sağlar.

Telemetri verileri neden eksik?

Bir uygulama kapanmadan önce boşaltılmadıysa her iki TelemetriChannels de arabelleğe alınan telemetriyi kaybeder.

Veri kaybını önlemek için, bir uygulama kapatılırken TelemetryClient'ı boşaltın.

Daha fazla bilgi için bkz . Verileri temizleme.

Çağrılar hangi özel durumlara neden olabilir Track_() ?

Yok. Bunları try-catch yan tümcelerinde sarmalamanız gerekmez. SDK sorunlarla karşılaşırsa, iletileri hata ayıklama konsolu çıkışında ve iletiler geçerse Tanılama Arama'da günlüğe kaydeder.

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

Evet, veri erişim API'si. Verileri ayıklamanın diğer yolları arasında çalışma alanı tabanlı bir kaynağa geçiş yaptıysanız Power BI veya hala klasik bir kaynaktaysanız sürekli dışarı aktarma sayılabilir.

Özel olaylara ve ölçüm API'lerine yönelik çağrılarım neden yoksayılıyor?

Uygulama Analizler SDK'sı otomatik yetkisiz erişimle uyumlu değildir. Otomatik yetkisiz erişim etkinleştirilirse, ve diğer özel olaylar ve ölçüm API'leri çağrıları Track() yoksayılır.

App Service sayfasının Uygulama Analizler sekmesinde Azure portalında otomatik yetkisiz girişi kapatın veya olarak disabledayarlayınApplicationInsightsAgent_EXTENSION_VERSION.

Arama ve Ölçüm grafiklerindeki sayılar neden eşit değil?

Örnekleme , uygulamanızdan portala gönderilen telemetri öğelerinin (istekler ve özel olaylar gibi) sayısını azaltır. Arama'da, alınan öğe sayısını görürsünüz. Olay sayısını görüntüleyen ölçüm grafiklerinde, gerçekleşen özgün olayların sayısını görürsünüz.

İletilen her öğe, öğenin temsil ettiği özgün olay sayısını gösteren bir itemCount özellik taşır. Örnekleme işlemini gözlemlemek için bu sorguyu Log Analytics'te çalıştırabilirsiniz:

    requests | summarize original_events = sum(itemCount), transmitted_events = count()

Bir olayda nasıl uyarı ayarlayabilirim?

Azure uyarıları yalnızca ölçümler içindir. Olayınız her gerçekleştiğinde değer eşiğini aşan özel bir ölçüm oluşturun. Ardından ölçümde bir uyarı ayarlayın. Ölçüm iki yönde de eşiği her geçtiğinde bir bildirim alırsınız. İlk değer yüksek veya düşük olsa da ilk geçişe kadar bildirim almazsınız. Her zaman birkaç dakikalık bir gecikme süresi vardır.

Sonraki adımlar