Wprowadzenie do usługi EventCounters

EventCounter to mechanizm .NET/.NET Core do publikowania i korzystania z liczników lub statystyk. EventCounters są obsługiwane na wszystkich platformach systemu operacyjnego — Windows, Linux i macOS. Można go traktować jako odpowiednik międzyplatformowy dla elementów PerformanceCounters obsługiwanych tylko w systemach Windows.

Chociaż użytkownicy mogą publikować dowolne niestandardowe elementy EventCounters spełniające ich potrzeby, platforma .NET domyślnie publikuje zestaw tych liczników. W tym dokumencie przedstawiono kroki wymagane do zbierania i wyświetlania EventCounters (zdefiniowanego przez system lub użytkownika) w aplikacja systemu Azure Szczegółowe informacje.

Uwaga

Poniższa dokumentacja opiera się na klasycznym interfejsie API usługi Application Szczegółowe informacje. Długoterminowy plan Szczegółowe informacje aplikacji polega na zbieraniu danych przy użyciu biblioteki OpenTelemetry. Aby uzyskać więcej informacji, zobacz Enable Azure Monitor OpenTelemetry for .NET, Node.js, Python and Java applications (Włączanie usługi Azure Monitor OpenTelemetry dla platformy .NET, Node.js, Python i Java applications).

Zbieranie Szczegółowe informacje EventCounters przy użyciu Szczegółowe informacje aplikacji

Aplikacja Szczegółowe informacje obsługuje zbieranie EventCounters za pomocą elementu EventCounterCollectionModule, który jest częścią nowo wydanego pakietu NuGet Microsoft.Application Szczegółowe informacje. EventCounterCollector. EventCounterCollectionModule funkcja jest automatycznie włączana w przypadku korzystania z elementu AspNetCore lub WorkerService. EventCounterCollectionModule zbiera liczniki z niekonfiguralną częstotliwością zbierania 60 sekund. Do zbierania zdarzeń nie są wymagane żadne specjalne uprawnienia. W przypadku aplikacji ASP.NET Core należy również dodać aplikację Microsoft.Application Szczegółowe informacje. Pakiet AspNetCore.

dotnet add package Microsoft.ApplicationInsights.EventCounterCollector
dotnet add package Microsoft.ApplicationInsights.AspNetCore

Zebrane liczniki domyślne

Począwszy od wersji 2.15.0 zestawu ASPNetCore SDK lub zestawu WorkerService SDK, domyślnie nie są zbierane żadne liczniki. Sam moduł jest włączony, dzięki czemu użytkownicy mogą dodawać odpowiednie liczniki w celu ich zbierania.

Aby uzyskać listę dobrze znanych liczników opublikowanych przez środowisko uruchomieniowe platformy .NET, zobacz dokument Dostępne liczniki .

Dostosowywanie liczników do zbierania

W poniższym przykładzie pokazano, jak dodawać/usuwać liczniki. To dostosowanie zostanie wykonane w ramach konfiguracji usługi aplikacji po włączeniu kolekcji telemetrii application Szczegółowe informacje przy użyciu polecenia AddApplicationInsightsTelemetry() lub AddApplicationInsightsWorkerService(). Poniżej znajduje się przykładowy kod z aplikacji ASP.NET Core. W przypadku innych typów aplikacji zapoznaj się z tym dokumentem.

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"));
        }
    );

Wyłączanie modułu kolekcji EventCounter

EventCounterCollectionModule można wyłączyć za pomocą polecenia ApplicationInsightsServiceOptions.

W poniższym przykładzie użyto zestawu ASP.NET Core SDK.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;

var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);

Podobne podejście może być również używane dla zestawu SDK usługi WorkerService, ale przestrzeń nazw musi zostać zmieniona, jak pokazano w poniższym przykładzie.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;

var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);

Liczniki zdarzeń w Eksploratorze metryk

Aby wyświetlić metryki eventcounter w Eksploratorze metryk, wybierz pozycję Aplikacja Szczegółowe informacje zasób i wybierz pozycję Metryki oparte na dzienniku jako przestrzeń nazw metryki. Następnie metryki eventcounter są wyświetlane w kategorii Niestandardowe.

Event counters reported in Application Insights Metric Explorer

Liczniki zdarzeń w analizie

Możesz również wyszukiwać i wyświetlać raporty liczników zdarzeń w usłudze Analytics w tabeli customMetrics .

Uruchom na przykład następujące zapytanie, aby zobaczyć, jakie liczniki są zbierane i dostępne do wykonywania zapytań:

customMetrics | summarize avg(value) by name

Event counters reported in Application Insights Analytics

Aby uzyskać wykres określonego licznika (na przykład: ThreadPool Completed Work Item Count) w ostatnim okresie, uruchom następujące zapytanie.

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

Chat of a single counter in Application Insights

Podobnie jak inne dane telemetryczne, usługa customMetrics ma również kolumnę cloud_RoleInstance wskazującą tożsamość wystąpienia serwera hosta, na którym działa aplikacja. Powyższe zapytanie pokazuje wartość licznika na wystąpienie i może służyć do porównywania wydajności różnych wystąpień serwera.

Alerty

Podobnie jak inne metryki, możesz ustawić alert , aby wyświetlić ostrzeżenie, jeśli licznik zdarzeń przekroczy określony limit. Otwórz okienko Alerty i wybierz pozycję Dodaj alert.

Często zadawane pytania

Czy widzę zdarzenia w metrykach na żywo?

Metryki na żywo nie pokazują obecnie elementów EventCounters. Użyj Eksploratora metryk lub analizy, aby wyświetlić dane telemetryczne.

Włączono Szczegółowe informacje aplikacji z poziomu portalu aplikacji internetowej platformy Azure. Dlaczego nie widzę usługi EventCounters?

Rozszerzenie Szczegółowe informacje aplikacji dla platformy ASP.NET Core nie obsługuje jeszcze tej funkcji.

Następne kroki