Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Metryki to pomiary liczbowe zgłaszane z biegiem czasu. Służy do monitorowania kondycji aplikacji i generowania alertów. Na przykład usługa internetowa może śledzić liczbę:
- Liczba żądań otrzymywanych na sekundę.
- Liczba milisekund potrzebnych na odpowiedź.
- Odpowiedzi wysyłane z błędem.
Zgłoś te metryki do systemu monitorowania w regularnych odstępach czasu. Skonfiguruj pulpity nawigacyjne, aby wyświetlać metryki i tworzyć alerty w celu powiadamiania osób o problemach. Jeśli usługa internetowa ma odpowiadać na żądania w ciągu 400 ms i zaczyna odpowiadać w 600 ms, system monitorowania może powiadomić pracowników operacyjnych, że odpowiedź aplikacji jest wolniejsza niż zwykle.
Pełną listę instrumentów wraz z ich atrybutami opisano w artykule Wbudowane metryki platformy ASP.NET Core.
Używanie metryk
Korzystanie z metryk obejmuje następujące elementy:
- Instrumentacja: kod w bibliotekach platformy .NET wykonuje pomiary i kojarzy te miary z nazwą metryki. Platforma .NET i ASP.NET Core zawierają wiele wbudowanych metryk.
- Zbieranie i przechowywanie: Aplikacja .NET konfiguruje przesyłanie nazwanych metryk do zewnętrznego przechowywania i analizy. Niektóre narzędzia mogą wykonywać konfigurację poza aplikacją przy użyciu plików konfiguracji lub narzędzia interfejsu użytkownika.
- Wizualizacja: Narzędzie, które może wyświetlać metryki w formacie czytelnym dla człowieka. Na przykład Grafana i Prometheus.
- Ostrzegania: Narzędzie, które dostarcza powiadomienia, gdy metryka przekracza próg. Jeśli na przykład średni czas odpowiedzi dla usługi internetowej przekracza 400 ms, alert można wysłać do personelu operacyjnego.
- Analiza: Narzędzie, które może analizować metryki w czasie. To narzędzie jest często internetowym pulpitem nawigacyjnym, który można dostosować, aby wyświetlić najważniejsze metryki dla określonej aplikacji.
Instrumentowany kod może rejestrować miary liczbowe, ale aby utworzyć przydatne metryki do monitorowania, należy agregować, przesyłać i przechowywać miary. Proces agregowania, przesyłania i przechowywania danych jest nazywany kolekcją. W tym samouczku przedstawiono kilka przykładów zbierania i wyświetlania metryk:
- Wypełnianie metryk w narzędziu Grafana za pomocą OpenTelemetry i Prometheus.
- Wyświetlanie metryk w czasie rzeczywistym za pomocą polecenia
dotnet-counters
Można również skojarzyć miary z parami klucz-wartość nazywanymi tagami, które umożliwiają kategoryzowanie danych na potrzeby analizy. Aby uzyskać więcej informacji, zobacz Metryki wielowymiarowe.
Tworzenie aplikacji startowej
Utwórz nową aplikację ASP.NET Core za pomocą następującego polecenia:
dotnet new web -o WebMetric
cd WebMetric
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --prerelease
dotnet add package OpenTelemetry.Extensions.Hosting
Zastąp zawartość Program.cs następującym kodem:
using OpenTelemetry.Metrics;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();
builder.AddMeter("Microsoft.AspNetCore.Hosting",
"Microsoft.AspNetCore.Server.Kestrel");
builder.AddView("http.server.request.duration",
new ExplicitBucketHistogramConfiguration
{
Boundaries = new double[] { 0, 0.005, 0.01, 0.025, 0.05,
0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 }
});
});
var app = builder.Build();
app.MapPrometheusScrapingEndpoint();
app.MapGet("/", () => "Hello OpenTelemetry! ticks:"
+ DateTime.Now.Ticks.ToString()[^3..]);
app.Run();
Wyświetlanie metryk za pomocą dotnet-counters
dotnet-counters to narzędzie wiersza polecenia, które może wyświetlać metryki na żywo dla aplikacji platformy .NET na żądanie. Nie wymaga konfiguracji, co ułatwia badania doraźne lub weryfikację działania instrumentacji metryk. Działa zarówno z interfejsami API opartymi na System.Diagnostics.Metrics jak i EventCounters.
Jeśli narzędzie dotnet-counters nie jest zainstalowane, uruchom następujące polecenie:
dotnet tool update -g dotnet-counters
Gdy aplikacja testowa jest uruchomiona, uruchom dotnet-counters. Poniższe polecenie przedstawia przykład dotnet-counters monitorowania wszystkich metryk z miernikaMicrosoft.AspNetCore.Hosting.
dotnet-counters monitor -n WebMetric --counters Microsoft.AspNetCore.Hosting
Wyświetlane są dane wyjściowe podobne do następujących:
Press p to pause, r to resume, q to quit.
Status: Running
[Microsoft.AspNetCore.Hosting]
http-server-current-requests
host=localhost,method=GET,port=5045,scheme=http 0
http-server-request-duration (s)
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0.001
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0.001
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0.001
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0
host=localhost,method=GET,port=5045,protocol=HTTP/1.1,ro 0
Aby uzyskać więcej informacji, zobacz dotnet-counters.
Wzbogać metrykę żądania ASP.NET Core
ASP.NET Core ma wiele wbudowanych metryk. Metryka http.server.request.duration :
- Rejestruje czas trwania żądań HTTP na serwerze.
- Przechwytuje informacje o żądaniu w tagach, takie jak dopasowana trasa i kod statusu odpowiedzi.
Metryka http.server.request.duration umożliwia wzbogacanie tagów za pomocą IHttpMetricsTagsFeature. Wzbogacanie polega na tym, że biblioteka lub aplikacja dodaje własne tagi do metryki. Ta funkcja jest przydatna, jeśli aplikacja chce dodać niestandardową kategoryzację do dashboardów lub alertów opartych na metrykach.
using Microsoft.AspNetCore.Http.Features;
var builder = WebApplication.CreateBuilder();
var app = builder.Build();
app.Use(async (context, next) =>
{
var tagsFeature = context.Features.Get<IHttpMetricsTagsFeature>();
if (tagsFeature != null)
{
var source = context.Request.Query["utm_medium"].ToString() switch
{
"" => "none",
"social" => "social",
"email" => "email",
"organic" => "organic",
_ => "other"
};
tagsFeature.Tags.Add(new KeyValuePair<string, object?>("mkt_medium", source));
}
await next.Invoke();
});
app.MapGet("/", () => "Hello World!");
app.Run();
Powyższy przykład:
- Dodaje middleware w celu ulepszenia metryki żądania ASP.NET Core.
- Pobiera element IHttpMetricsTagsFeature z .
HttpContextFunkcja jest obecna w kontekście tylko wtedy, gdy ktoś nasłuchuje metryki. Sprawdź przed użyciem, czyIHttpMetricsTagsFeaturenie jestnull. - Dodaje niestandardowy tag, który zawiera źródło marketingowe żądania, do metryki
http.server.request.duration.- Tag ma nazwę
mkt_mediumi wartość na podstawie wartości ciągu zapytania utm_medium . Wartośćutm_mediumjest przekształcana na znany zakres wartości. - Tag umożliwia kategoryzowanie żądań według typu medium marketingowego, co może być przydatne podczas analizowania ruchu aplikacji internetowej.
- Tag ma nazwę
Uwaga / Notatka
Postępuj zgodnie z najlepszymi rozwiązaniami dotyczącymi metryk wielowymiarowych podczas wzbogacania za pomocą tagów niestandardowych. Tagi, które są zbyt liczne lub mają nieograniczony zakres, tworzą wiele kombinacji tagów, co powoduje wysoką wymiarowość. Narzędzia kolekcji mają limity obsługiwanych wymiarów dla licznika i mogą filtrować wyniki, aby zapobiec nadmiernemu użyciu pamięci.
Wyłącz metryki HTTP dla wybranych punktów końcowych i żądań
Rezygnacja z rejestrowania metryk jest korzystna dla punktów końcowych często wywoływanych przez zautomatyzowane systemy, takie jak kontrole kondycji. Rejestrowanie metryk dla tych żądań jest zwykle niepotrzebne. Niechciane dane telemetryczne zużywają zasoby na zbieranie i przechowywanie oraz mogą zniekształcać wyniki wyświetlane w panelu monitorowania telemetrii.
Żądania HTTP do punktu końcowego można wykluczyć z metryk, dodając metadane za pomocą atrybutu DisableHttpMetrics lub metody DisableHttpMetrics:
- Dodaj atrybut DisableHttpMetrics do kontrolera Web API, SignalR hubu lub usługi gRPC.
- Wywołaj metodę DisableHttpMetrics podczas mapowania punktów końcowych podczas uruchamiania aplikacji:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz").DisableHttpMetrics();
app.Run();
Alternatywnie IHttpMetricsTagsFeature.MetricsDisabled właściwość została dodana dla:
- Zaawansowane scenariusze, w których żądanie nie odwzorowuje się na punkt końcowy.
- Dynamiczne wyłączanie kolekcji metryk dla określonych żądań HTTP.
// Middleware that conditionally opts-out HTTP requests.
app.Use(async (context, next) =>
{
var metricsFeature = context.Features.Get<IHttpMetricsTagsFeature>();
if (metricsFeature != null &&
context.Request.Headers.ContainsKey("x-disable-metrics"))
{
metricsFeature.MetricsDisabled = true;
}
await next(context);
});
Tworzenie metryk niestandardowych
Metryki tworzysz za pomocą interfejsów API w przestrzeni nazw System.Diagnostics.Metrics. Aby uzyskać informacje, zobacz Tworzenie metryk niestandardowych.
Tworzenie metryk w aplikacjach ASP.NET Core za pomocą polecenia IMeterFactory
Tworzenie wystąpień Meter w aplikacjach ASP.NET Core za pomocą polecenia IMeterFactory.
ASP.NET Core domyślnie rejestruje IMeterFactory w iniekcji zależności (DI). Fabryka mierników integruje metryki z DI, co ułatwia ich izolowanie i zbieranie.
IMeterFactory jest szczególnie przydatny do testowania. Umożliwia uruchamianie wielu testów obok siebie i zbieranie tylko wartości metryk zarejestrowanych w teście.
Aby użyć IMeterFactory w aplikacji, utwórz typ, który używa IMeterFactory do tworzenia niestandardowych metryk aplikacji.
public class ContosoMetrics
{
private readonly Counter<int> _productSoldCounter;
public ContosoMetrics(IMeterFactory meterFactory)
{
var meter = meterFactory.Create("Contoso.Web");
_productSoldCounter = meter.CreateCounter<int>("contoso.product.sold");
}
public void ProductSold(string productName, int quantity)
{
_productSoldCounter.Add(quantity,
new KeyValuePair<string, object?>("contoso.product.name", productName));
}
}
Zarejestruj typ metryk za pomocą DI w Program.cs.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ContosoMetrics>();
Należy wdrożyć typ metryk i zanotować wartości tam, gdzie to konieczne. Ponieważ typ metryk jest zarejestrowany w DI, można go używać z kontrolerami MVC, interfejsami Minimal API lub dowolnym innym typem tworzonym przez DI:
app.MapPost("/complete-sale", (SaleModel model, ContosoMetrics metrics) =>
{
// ... business logic such as saving the sale to a database ...
metrics.ProductSold(model.ProductName, model.QuantitySold);
});
Aby monitorować miernik "Contoso.Web", użyj następującego polecenia dotnet-counters .
dotnet-counters monitor -n WebMetric --counters Contoso.Web
Wyświetlane są dane wyjściowe podobne do następujących:
Press p to pause, r to resume, q to quit.
Status: Running
[Contoso.Web]
contoso.product.sold (Count / 1 sec)
contoso.product.name=Eggs 12
contoso.product.name=Milk 0
Wyświetlanie metryk w Grafanie z użyciem OpenTelemetry i Prometheus.
Overview
- Jest neutralnym dla dostawcy projektem open source obsługiwanym przez Cloud Native Computing Foundation.
- Standaryzacja generowania i zbierania danych telemetrycznych dla oprogramowania natywnego dla chmury.
- Współpracuje z platformą .NET przy użyciu interfejsów API metryk .NET.
- Jest zatwierdzony przez usługę Azure Monitor i wielu dostawców APM.
Od wersji ASP.NET Core 11 wbudowane metryki serwera HTTP i dane śledzenia w tej platformie są zgodne z wymaganymi elementami konwencji semantycznych OpenTelemetry dla serwera HTTP. Działanie żądania serwera HTTP domyślnie emituje te atrybuty, pasując do wbudowanych metryk. W związku z tym OpenTelemetry.Instrumentation.AspNetCore pakiet NuGet jest opcjonalny do zbierania metryk i śladów serwera HTTP. Przykład w tym artykule używa tylko wbudowanych mierników (Microsoft.AspNetCore.Hosting i Microsoft.AspNetCore.Server.Kestrel) i nie odwołuje się do pakietu instrumentacji. Aby uzyskać listę wbudowanych instrumentów i ich atrybutów, zobacz ASP.NET Core wbudowane metryki HTTP.
Mimo że pakiet jest opcjonalny, nie jest to odpowiednik wbudowanej instrumentacji. Wbudowana instrumentacja obejmuje tylko wymagane części konwencji semantycznych. Przed usunięciem pakietu należy wziąć pod uwagę następujące różnice:
- Niektóre zalecane atrybuty serwera HTTP nie są emitowane przez wbudowaną instrumentację, takie jak niektóre atrybuty klienta i sieci (na przykład
client.address). Prace nad pełną obsługą atrybutu wymaganego warunkowourl.query, w tym maskowania, również nadal trwają. Jeśli korzystasz z tych atrybutów, zachowaj pakiet. Aby uzyskać więcej informacji, zobacz dotnet/aspnetcore#65873. - Pakiet stanowi również wygodne rozwiązanie do włączania telemetrii wykraczającej poza serwer HTTP, w tym Blazor i SignalR. W celu śledzenia rejestruje dodatkowe źródła działań dla SignalR (
Microsoft.AspNetCore.SignalR.Serverw .NET 9 i nowszych) i Blazor (Microsoft.AspNetCore.ComponentsorazMicrosoft.AspNetCore.Components.Server.Circuitsw .NET 10 i nowszych). W przypadku metryk włącza powiązane wbudowane mierniki (takie jakMicrosoft.AspNetCore.Components). Bez pakietu samodzielnie zarejestruj źródła za pomocąAddSourceoraz mierniki za pomocąAddMeter, aby zbierać takie same dane telemetryczne.
Gdy dodajesz telemetrię do aplikacji, która potrzebuje jedynie metryk i śladów serwera HTTP, możesz polegać na wbudowanej instrumentacji i pominąć pakiet. Podczas uaktualniania istniejącej aplikacji z .NET 10 do .NET 11, która już odwołuje się do pakietu, zachowaj ją, jeśli zależysz od atrybutów, źródeł lub mierników opisanych na poprzedniej liście. Usunięcie pakietu w trybie dyskretnym usuwa te dane telemetryczne.
Ważne
Po włączeniu OpenTelemetry OpenTelemetry.Instrumentation.AspNetCore (oprócz metryk) bez pakietu , zarejestruj serwer HTTP platformy ActivitySource, aby aktywność żądania była rejestrowana. Źródło aktywności serwera HTTP w ASP.NET Core nosi nazwę Microsoft.AspNetCore, a platforma tworzy aktywność żądania o nazwie Microsoft.AspNetCore.Hosting.HttpRequestIn dla każdego żądania, aby propagować kontekst śledzenia. Jeśli źródło Microsoft.AspNetCore nie jest zarejestrowane w pakiecie SDK OpenTelemetry, aktywność żądania nie jest rejestrowana, a domyślny sampler ParentBased po cichu odrzuca wszystkie niestandardowe podrzędne spany rozpoczęte podczas żądania.
W istniejącym potoku śledzenia zarejestruj źródło jawnie:
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("Microsoft.AspNetCore")
.AddSource("MyApp"));
W poprzednim przykładzie:
-
AddSource("Microsoft.AspNetCore")rejestruje źródło aktywności serwera HTTP platformy ASP.NET Core, dzięki czemu aktywność żądania jest rejestrowana. -
AddSource("MyApp")rejestruje własną ActivitySource aplikacji. ZastąpMyAppnazwą używaną przez Twoją aplikację. - Eksporter nie jest wyświetlany. W tym przykładzie założono, że eksporter jest już skonfigurowany w potoku śledzenia.
Alternatywnie wywołaj AddAspNetCoreInstrumentation() z pakietu OpenTelemetry.Instrumentation.AspNetCore, który rejestruje źródło za Ciebie.
W tym samouczku przedstawiono jedną z integracji dostępnych dla metryk OpenTelemetry przy użyciu projektów open-source Prometheus i Grafana. Przepływ danych metryk:
Interfejsy API metryk ASP.NET Core rejestrują pomiary z przykładowej aplikacji.
Biblioteka platformy .NET OpenTelemetry uruchomiona w aplikacji agreguje miary.
Biblioteka eksportera Prometheus udostępnia zagregowane dane za pośrednictwem punktu końcowego metryk HTTP. W terminologii OpenTelemetry "Eksporter" to biblioteki, które przesyłają dane telemetryczne do zapleczy specyficznych dla dostawcy.
Serwer Prometheus
- Odpytuje punkt końcowy metryk.
- Odczytuje dane.
- Przechowuje dane w bazie danych pod kątem trwałości długoterminowej. Prometheus określa odczytywanie i przechowywanie danych jako pobieranie z punktu końcowego.
- Można uruchomić na innej maszynie.
Serwer Grafana:
- Wykonuje zapytanie dotyczące danych przechowywanych w rozwiązaniu Prometheus i wyświetla je na internetowym pulpicie nawigacyjnym monitorowania.
- Można uruchomić na innej maszynie.
Wyświetlanie metryk z przykładowej aplikacji
Przejdź do przykładowej aplikacji. Przeglądarka wyświetla Hello OpenTelemetry! ticks:<3digits>, gdzie 3digits to trzy ostatnie cyfry bieżącej wartości DateTime.Ticks.
Dołącz /metrics do adresu URL, aby wyświetlić punkt końcowy metryk. W przeglądarce są wyświetlane zbierane metryki:
Skonfiguruj i ustaw Prometeusza
Postępuj zgodnie z pierwszymi krokami rozwiązania Prometheus , aby skonfigurować serwer Prometheus i potwierdzić, że działa.
Zmodyfikuj plik konfiguracji prometheus.yml , tak aby rozwiązanie Prometheus zeskrobało punkt końcowy metryk, który uwidacznia przykładowa aplikacja. Dodaj następujący wyróżniony tekst w scrape_configs sekcji:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: 'MyASPNETApp'
scrape_interval: 5s # Poll every 5 seconds for a more responsive demo.
static_configs:
- targets: ["localhost:5045"] ## Enter the HTTP port number of the demo app.
W wyróżnionym wcześniej fragmencie YAML zastąp 5045 numerem portu używanym przez przykładową aplikację.
Rozpocznij Prometheus
- Załaduj ponownie konfigurację lub uruchom ponownie serwer Prometheus.
- Upewnij się, że OpenTelemetryTest jest w stanie UP na stronie Status>Cele portalu internetowego Prometheus.
Wybierz ikonę Otwórz eksploratora metryk , aby wyświetlić dostępne metryki:
Wprowadź kategorię licznika, taką jak http_, w polu Wyrażenie, aby zobaczyć dostępne metryki:
Alternatywnie wprowadź kategorię licznika, taką jak kestrel, w polu Wyrażenie, aby zobaczyć dostępne metryki:
Wyświetlanie metryk na pulpicie Grafana
Postępuj zgodnie z instrukcjami instalacji , aby zainstalować aplikację Grafana i połączyć ją ze źródłem danych Prometheus.
Postępuj zgodnie z instrukcjami tworzenia grafu Prometheus. Alternatywnie, przygotowane wcześniej dashboardy dla metryk .NET są dostępne do pobrania na dashboardach zespołu .NET @ grafana.com. Pobrany kod JSON pulpitu nawigacyjnego można zaimportować do narzędzia Grafana.
Testowanie metryk w aplikacjach ASP.NET Core
Metryki można przetestować w aplikacjach ASP.NET Core. Jednym ze sposobów jest zbieranie i potwierdzanie wartości metryk w testach integracji ASP.NET Core przy użyciu polecenia MetricCollector<T>.
public class BasicTests : IClassFixture<WebApplicationFactory<Program>>
{
private readonly WebApplicationFactory<Program> _factory;
public BasicTests(WebApplicationFactory<Program> factory) => _factory = factory;
[Fact]
public async Task Get_RequestCounterIncreased()
{
// Arrange
var client = _factory.CreateClient();
var meterFactory = _factory.Services.GetRequiredService<IMeterFactory>();
var collector = new MetricCollector<double>(meterFactory,
"Microsoft.AspNetCore.Hosting", "http.server.request.duration");
// Act
var response = await client.GetAsync("/");
// Assert
Assert.Contains("Hello OpenTelemetry!", await response.Content.ReadAsStringAsync());
await collector.WaitForMeasurementsAsync(minCount: 1).WaitAsync(TimeSpan.FromSeconds(5));
Assert.Collection(collector.GetMeasurementSnapshot(),
measurement =>
{
Assert.Equal("http", measurement.Tags["url.scheme"]);
Assert.Equal("GET", measurement.Tags["http.request.method"]);
Assert.Equal("/", measurement.Tags["http.route"]);
});
}
}
Poprzedni test:
- Uruchamia aplikację internetową w pamięci za pomocą polecenia WebApplicationFactory<TEntryPoint>.
Programw argumencie ogólnym fabryki określa aplikację internetową. - Zbiera wartości metryk za pomocą polecenia MetricCollector<T>
- Wymaga odwołania do pakietu
Microsoft.Extensions.Diagnostics.Testing. - Element
MetricCollector<T>jest tworzony przy użyciu aplikacji IMeterFactoryinternetowej . Dzięki temu moduł zbierający może zgłaszać tylko wartości wskaźników zarejestrowanych przez test. - Zawiera nazwę miernika
Microsoft.AspNetCore.Hostingi nazwę licznikahttp.server.request.durationdo zebrania danych.
- Wymaga odwołania do pakietu
- Wysyła żądanie HTTP do aplikacji internetowej.
- Potwierdza test przy użyciu wyników modułu zbierającego metryki.
Metryki ASP.NET Core Identity
Obserwowalność w ASP.NET Core Identity pomaga monitorować działania związane z zarządzaniem użytkownikami i procesy uwierzytelniania.
Metryki znajdują się w mierniku Microsoft.AspNetCore.Identity i zostały opisane w poniższych sekcjach.
Metryki zarządzania użytkownikami
-
aspnetcore.identity.user.create.durationmierzy czas trwania operacji tworzenia użytkownika. -
aspnetcore.identity.user.update.durationmierzy czas trwania operacji aktualizacji użytkownika. -
aspnetcore.identity.user.delete.durationmierzy czas trwania operacji usuwania użytkownika. -
aspnetcore.identity.user.check_password_attemptszlicza próby weryfikacji hasła. -
aspnetcore.identity.user.generated_tokensliczy tokeny generowane dla użytkowników, takie jak tokeny resetowania haseł. -
aspnetcore.identity.user.verify_token_attemptszlicza próby weryfikacji tokenu.
Metryki uwierzytelniania
-
aspnetcore.identity.sign_in.authenticate.durationmierzy czas trwania operacji uwierzytelniania. -
aspnetcore.identity.sign_in.check_password_attemptszlicza próby sprawdzania haseł podczas logowania. -
aspnetcore.identity.sign_in.sign_inszlicza pomyślne logowania. -
aspnetcore.identity.sign_in.sign_outszlicza wylogowania. -
aspnetcore.identity.sign_in.two_factor_clients_rememberedliczba zapamiętanych klientów z uwierzytelnianiem dwuskładnikowym. -
aspnetcore.identity.sign_in.two_factor_clients_forgottenLiczba zapomnianych klientów dwuskładnikowych.
Użyj następujących metryk, aby:
- Monitorowanie rejestracji użytkowników i zarządzania nimi.
- Śledzenie wzorców uwierzytelniania i potencjalnych problemów z zabezpieczeniami.
- Mierzenie wydajności operacji Identity.
- Obserwuj użycie dwuskładnikowego uwierzytelniania.
Wyświetlanie Identity metryk
Służy dotnet-counters do wyświetlania tych metryk i monitorowania ich w czasie rzeczywistym. Możesz też wyeksportować je do rozwiązania Prometheus i zwizualizować je w narzędziu Grafana przy użyciu technik opisanych wcześniej w tym artykule.
Aby na przykład monitorować wszystkie Identity metryki za pomocą dotnet-counters polecenia:
dotnet-counters monitor -n YourAppName --counters Microsoft.AspNetCore.Identity
liczniki i mierniki ASP.NET Core
Listę mierników i liczników platformy ASP.NET Core można znaleźć w artykule Metryki ASP.NET Core. W ASP.NET Core 11 i nowszych wbudowane mierniki serwera HTTP (na przykład Microsoft.AspNetCore.Hosting i Microsoft.AspNetCore.Server.Kestrel) emitują dane zgodne z wymaganymi częściami semantyki serwera HTTP OpenTelemetry. Z tych mierników można korzystać przy użyciu zestawu SDK OpenTelemetry bez pakietu OpenTelemetry.Instrumentation.AspNetCore.