Aracılığıyla paylaş


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 EventCounterCollectionModuletoplamayı EventCounters destekler. EventCounterCollectionModuleAspNetCore 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 ApplicationInsightsServiceOptionsdevre 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.

Application Insights Ölçüm Gezgini'nde bildirilen olay sayaçları

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

Application Insights Analytics'te bildirilen olay sayaçları

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

Application Insights'ta tek bir sayacın sohbeti

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.

Sonraki adımlar