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 usłudze aplikacja systemu Azure Insights.
Uwaga
Zalecamy dystrybucję OpenTelemetry usługi Azure Monitor dla nowych aplikacji lub klientów, aby umożliwić usłudze Azure Monitor Application Insights. Dystrybucja OpenTelemetry usługi Azure Monitor zapewnia podobną funkcjonalność i środowisko jako zestaw SDK usługi Application Insights. Migracja z zestawu SDK usługi Application Insights jest możliwa przy użyciu przewodników migracji dla platformy .NET, Node.js i języka Python, ale nadal pracujemy nad dodaniem kilku dodatkowych funkcji w celu zapewnienia zgodności z poprzednimi wersjami.
Zbieranie zdarzeń przy użyciu usługi Application Insights
Usługa Application Insights obsługuje zbieranie EventCounters
za pomocą elementu EventCounterCollectionModule
, który jest częścią nowo wydanego pakietu NuGet Microsoft.ApplicationInsights.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ć pakiet Microsoft.ApplicationInsights.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 zbierania danych telemetrycznych usługi Application Insights 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ę Zasób usługi Application Insights i wybierz pozycję Metryki oparte na dzienniku jako przestrzeń nazw metryk. Następnie metryki eventcounter są wyświetlane w kategorii Niestandardowe.
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
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
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.
Usługa Application Insights została włączona z poziomu portalu aplikacji internetowej platformy Azure. Dlaczego nie widzę usługi EventCounters?
Rozszerzenie usługi Application Insights dla platformy ASP.NET Core nie obsługuje jeszcze tej funkcji.