EventCounters'a giriş
EventCounter
, sayaçları veya istatistikleri yayımlamak ve kullanmak için .NET/.NET Core mekanizmasıdır. EventCounters, Windows, Linux ve macOS gibi tüm işletim sistemi platformlarında desteklenir. Yalnızca Windows sistemlerinde desteklenen PerformanceCounters için platformlar arası eşdeğeri olarak düşünülebilir.
Kullanıcılar gereksinimlerini karşılamak için herhangi bir özel EventCounters
öğeyi yayımlasa da, .NET varsayılan olarak bu sayaçların bir kümesini yayımlar. Bu belge, Azure Uygulaması lication Insights'ta toplama ve görüntüleme EventCounters
(sistem tanımlı veya kullanıcı tanımlı) için gereken adımlarda yol gösterir.
Not
Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.
EventCounters toplamak için Application Insights'ı kullanma
Application Insights, yeni yayımlanan Microsoft.ApplicationInsights.EventCounterCollector NuGet paketinin bir parçası olan ile EventCounterCollectionModule
toplamayı EventCounters
destekler. EventCounterCollectionModule
AspNetCore veya WorkerService kullanılırken otomatik olarak etkinleştirilir. EventCounterCollectionModule
60 saniyelik yapılandırılamayan koleksiyon sıklığına sahip sayaçları toplar. EventCounters'ı toplamak için özel izin gerekmez. ASP.NET Core uygulamaları için Microsoft.ApplicationInsights.AspNetCore paketini de eklemek istiyorsunuz.
dotnet add package Microsoft.ApplicationInsights.EventCounterCollector
dotnet add package Microsoft.ApplicationInsights.AspNetCore
Toplanan varsayılan sayaçlar
AspNetCore SDK veya WorkerService SDK'sının 2.15.0 sürümünden itibaren varsayılan olarak hiçbir sayaç toplanmaz. Modülün kendisi etkinleştirildiğinden, kullanıcılar bunları toplamak için istenen sayaçları ekleyebilir.
.NET Çalışma Zamanı tarafından yayımlanan iyi bilinen sayaçların listesini almak için Bkz . Kullanılabilir Sayaçlar belgesi.
Toplanacak sayaçları özelleştirme
Aşağıdaki örnekte sayaçların nasıl ekleneceği/kaldırılacağı gösterilmektedir. Bu özelleştirme, Application Insights telemetri koleksiyonu veya AddApplicationInsightsWorkerService()
kullanılarak AddApplicationInsightsTelemetry()
etkinleştirildikten sonra uygulama hizmeti yapılandırmanızın bir parçası olarak yapılır. Aşağıda, ASP.NET Core uygulamasından örnek bir kod verilmiştir. Diğer uygulama türleri için bu belgeye bakın.
using Microsoft.ApplicationInsights.Extensibility.EventCounterCollector;
using Microsoft.Extensions.DependencyInjection;
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>(
(module, o) =>
{
// Removes all default counters, if any.
module.Counters.Clear();
// Adds a user defined counter "MyCounter" from EventSource named "MyEventSource"
module.Counters.Add(
new EventCounterCollectionRequest("MyEventSource", "MyCounter"));
// Adds the system counter "gen-0-size" from "System.Runtime"
module.Counters.Add(
new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
}
);
EventCounter koleksiyon modülünü devre dışı bırakma
EventCounterCollectionModule
kullanılarak ApplicationInsightsServiceOptions
devre dışı bırakılabilir.
Aşağıdaki örnekte ASP.NET Core SDK'sı kullanılmaktadır.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
WorkerService SDK'sı için de benzer bir yaklaşım kullanılabilir, ancak ad alanı aşağıdaki örnekte gösterildiği gibi değiştirilmelidir.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
Ölçüm Gezgini'ndeki olay sayaçları
Ölçüm Gezgini'nde EventCounter ölçümlerini görüntülemek için Application Insights kaynağı'na tıklayın ve ölçüm ad alanı olarak Günlük tabanlı ölçümler'i seçin. Ardından EventCounter ölçümleri Özel kategorisi altında görüntülenir.
Analytics'teki olay sayaçları
Ayrıca, customMetrics tablosundaki Analytics'te olay sayacı raporlarını arayabilir ve görüntüleyebilirsiniz.
Örneğin, hangi sayaçların toplandığını ve sorgu için kullanılabilir olduğunu görmek için aşağıdaki sorguyu çalıştırın:
customMetrics | summarize avg(value) by name
Son dönemde belirli bir sayacın (örneğin: ThreadPool Completed Work Item Count
) grafiğini almak için aşağıdaki sorguyu çalıştırın.
customMetrics
| where name contains "System.Runtime|ThreadPool Completed Work Item Count"
| where timestamp >= ago(1h)
| summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Diğer telemetrilerde olduğu gibi customMetrics'de de uygulamanızın üzerinde çalıştığı konak sunucu örneğinin kimliğini gösteren bir sütun cloud_RoleInstance
bulunur. Yukarıdaki sorgu örnek başına sayaç değerini gösterir ve farklı sunucu örneklerinin performansını karşılaştırmak için kullanılabilir.
Uyarılar
Diğer ölçümlerde olduğu gibi, bir olay sayacı belirttiğiniz sınırın dışına çıktığında sizi uyaracak bir uyarı ayarlayabilirsiniz. Uyarılar bölmesini açın ve Uyarı Ekle'yi seçin.
Sık sorulan sorular
Canlı Ölçümlerde EventCounters'ı görebilir miyim?
Canlı Ölçümler bugünden itibaren EventCounters'i göstermez. Telemetri verilerini görmek için Ölçüm Gezgini'ni veya Analiz'i kullanın.
Azure Web App Portalı'ndan Application Insights'ın etkinleştirilmesini sağladım. EventCounters'ı neden göremiyorum?
ASP.NET Core için Application Insights uzantısı henüz bu özelliği desteklemez.