Ö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:
Application Insights SDK 'sını projenize ekleyin:
Cihazınızda veya Web sunucusu kodunuzda şunları dahil edin:
C#:
using Microsoft.ApplicationInsights;Visual Basic:
Imports Microsoft.ApplicationInsightsJava:
import com.microsoft.applicationinsights.TelemetryClient;Node.js:
var applicationInsights = require("applicationinsights");
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ğeri3-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ı
1ve ölçüm değerlerinin sayısı2. Toplama yaklaşımını kullanırken,TrackMetriczaman 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ınvalueCount.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
startTrackPagekullanınstopTrackPage.
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çerirbrowserTimingsTablo, 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:

ö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:
- Bunları, bir sorun sıklığının göstergesi olarak saymakiçin.
- Tek tek oluşumları incelemekiçin.
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.
- ASP.NET: özel durumları yakalamak için kod yazın.
- Java EE: özel durumlar otomatik olarak yakalanır.
- JavaScript: özel durumlar otomatik olarak yakalanır. Otomatik toplamayı devre dışı bırakmak istiyorsanız, Web sayfalarınızı eklediğiniz kod parçacığına bir satır ekleyin:
({
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
tostringtodoubleyazmalısiniz. - örnekleme olasılığını dikkate almak için değil,
sum(itemCount)kullansanızcount()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.
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.