metrische gegevens van ASP.NET Core

Metrische gegevens zijn numerieke metingen die in de loop van de tijd worden gerapporteerd. Gebruik deze om de status van een app te bewaken en waarschuwingen te genereren. Een webservice kan bijvoorbeeld bijhouden hoeveel:

  • Aanvragen die per seconde worden ontvangen.
  • Milliseconden die nodig zijn om te reageren.
  • Reacties die het verzendt met een fout.

Rapporteer deze metrische gegevens met regelmatige tussenpozen aan een bewakingssysteem. Stel dashboards in om metrische gegevens weer te geven en waarschuwingen te maken om mensen op de hoogte te stellen van problemen. Als de webservice is bedoeld om te reageren op aanvragen binnen 400 ms en binnen 600 ms reageert, kan het bewakingssysteem de operationele medewerkers op de hoogte stellen dat het app-antwoord langzamer is dan normaal.

De uitgebreide lijst met alle instrumenten samen met hun kenmerken wordt beschreven in ASP.NET Core ingebouwde metrische gegevens.

Metrische gegevens gebruiken

Het gebruik van metrische gegevens omvat het volgende:

  • Instrumentatie: Code in .NET-bibliotheken voert metingen uit en koppelt deze metingen aan een metrieknaam. .NET en ASP.NET Core bevatten veel ingebouwde metrische gegevens.
  • Verzameling en opslag: Een .NET-app configureert benoemde metrische gegevens die moeten worden verzonden vanuit de app voor externe opslag en analyse. Sommige hulpprogramma's kunnen configuraties uitvoeren buiten de app met behulp van configuratiebestanden of een ui-hulpprogramma.
  • Visualisatie: Een hulpprogramma waarmee de metrische gegevens in een door mensen leesbare indeling kunnen worden weergegeven. Bijvoorbeeld Grafana en Prometheus.
  • Waarschuwen: Een hulpprogramma dat meldingen biedt wanneer een metrische waarde een drempelwaarde overschrijdt. Als de gemiddelde reactietijd voor een webservice bijvoorbeeld groter is dan 400 ms, kan er een waarschuwing worden verzonden naar het operationele personeel.
  • Analyse: Een hulpprogramma waarmee de metrische gegevens in de loop van de tijd kunnen worden geanalyseerd. Dit hulpprogramma is vaak een webdashboard dat kan worden aangepast om de belangrijkste metrische gegevens voor een specifieke app weer te geven.

Geïnstrumenteerde code kan numerieke metingen vastleggen, maar om nuttige metrische gegevens te maken voor bewaking, moet u de metingen aggregeren, verzenden en opslaan. Het proces voor het samenvoegen, verzenden en opslaan van gegevens wordt verzameling genoemd. In deze zelfstudie ziet u verschillende voorbeelden van het verzamelen en weergeven van metrische gegevens:

U kunt metingen ook koppelen aan sleutel-waardeparen genaamd tags waarmee u gegevens voor analyse kunt categoriseren. Zie Multidimensionale metrische gegevens voor meer informatie.

De starter-app maken

Maak een nieuwe ASP.NET Core-app met de volgende opdracht:

dotnet new web -o WebMetric
cd WebMetric
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --prerelease
dotnet add package OpenTelemetry.Extensions.Hosting

Vervang de inhoud van Program.cs met de volgende code:

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();

Metingen weergeven met dotnet-counters

dotnet-counters is een opdrachtregelprogramma waarmee live metrische gegevens voor .NET-apps op aanvraag kunnen worden weergegeven. Hiervoor is geen installatie vereist, waardoor het nuttig is voor ad-hoconderzoeken of om te controleren of metrische instrumentatie werkt. Het werkt met zowel System.Diagnostics.Metrics op gebaseerde API's als EventCounters.

Als het hulpprogramma dotnet-counters niet is geïnstalleerd, voert u de volgende opdracht uit:

dotnet tool update -g dotnet-counters

Terwijl de test-app wordt uitgevoerd, start dotnet-counters. De volgende opdracht toont een voorbeeld van het bewaken van dotnet-counters alle metrische gegevens van de Microsoft.AspNetCore.Hosting meter.

dotnet-counters monitor -n WebMetric --counters Microsoft.AspNetCore.Hosting

Uitvoer die lijkt op het volgende wordt weergegeven:

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

Zie dotnet-counters voor meer informatie.

De metrische gegevens van de ASP.NET Core-aanvraag verrijken

ASP.NET Core heeft veel ingebouwde metrische gegevens. De http.server.request.duration metrische waarde:

  • Registreert de duur van HTTP-aanvragen op de server.
  • Legt aanvraaggegevens vast in tags, zoals de overeenkomende route- en antwoordstatuscode.

De http.server.request.duration metrische waarde biedt ondersteuning voor tagverrijking met behulp van IHttpMetricsTagsFeature. Verrijking is wanneer een bibliotheek of app zijn eigen tags toevoegt aan een metrische waarde. Deze functie is handig als een app een aangepaste categorisatie wil toevoegen aan dashboards of waarschuwingen die zijn gebouwd met metrische gegevens.

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();

Het voorgaande voorbeeld:

  • Hiermee voegt u middleware toe om de metrische gegevens van de ASP.NET Core-aanvraag te verrijken.
  • Haalt de IHttpMetricsTagsFeature van de HttpContext. De functie is alleen aanwezig in de context als iemand naar de metrische gegevens luistert. Controleer IHttpMetricsTagsFeature of het niet null is voordat u deze gebruikt.
  • Hiermee voegt u een aangepaste tag toe die de marketingbron van de aanvraag bevat aan de http.server.request.duration metrische waarde.
    • De tag heeft de naam mkt_medium en een waarde op basis van de utm_medium querytekenreekswaarde. De utm_medium waarde wordt omgezet in een bekend bereik met waarden.
    • Met de tag kunnen aanvragen worden gecategoriseerd op marketingmediumtype, wat nuttig kan zijn bij het analyseren van web-app-verkeer.

Note

Volg de best practices voor multidimensionale metrische gegevens bij het verrijken met aangepaste tags. Tags die te veel zijn of een niet-afhankelijk bereik hebben, maken veel tagcombinaties, wat resulteert in hoge dimensies. Verzamelingshulpprogramma's hebben limieten voor ondersteunde dimensies voor een teller en kunnen resultaten filteren om overmatig geheugengebruik te voorkomen.

Afmelden voor HTTP-metrische gegevens voor bepaalde eindpunten en aanvragen

Het afmelden van metrische gegevens is nuttig voor eindpunten die vaak worden aangeroepen door geautomatiseerde systemen, zoals statuscontroles. Het vastleggen van metrische gegevens voor deze aanvragen is over het algemeen overbodig. Ongewenste telemetrie maakt gebruik van resources om te verzamelen en op te slaan en kan de resultaten vervormen die worden weergegeven in een telemetriedashboard.

U kunt HTTP-aanvragen uitsluiten voor een eindpunt van metrische gegevens door metagegevens toe te voegen, met het kenmerk DisableHttpMetrics of de methode DisableHttpMetrics :

  • Voeg het kenmerk DisableHttpMetrics toe aan de web-API-controller, SignalR hub of gRPC-service.
  • Roep DisableHttpMetrics aan bij het configureren van eindpunten tijdens het opstarten van de app.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();

var app = builder.Build();
app.MapHealthChecks("/healthz").DisableHttpMetrics();
app.Run();

Als alternatief werd de eigenschap IHttpMetricsTagsFeature.MetricsDisabled toegevoegd voor:

  • Geavanceerde scenario's waarbij een verzoek niet aan een eindpunt wordt gekoppeld.
  • Verzameling metrische gegevens dynamisch uitschakelen voor specifieke HTTP-aanvragen.
// 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);
});

Aangepaste meetwaarden maken

U maakt metrische gegevens met behulp van API's in de System.Diagnostics.Metrics naamruimte. Zie Aangepaste metrische gegevens maken voor meer informatie.

Metrische gegevens maken in ASP.NET Core-apps met IMeterFactory

Maak Meter-instanties in ASP.NET Core-apps met IMeterFactory.

ASP.NET Core registreert standaard IMeterFactory in afhankelijkheidsinjectie (DI). De meterfactory integreert metrische gegevens met DI, waardoor het isoleren en verzamelen van metrische gegevens eenvoudig is. IMeterFactory is vooral nuttig voor het testen. Hiermee kunnen meerdere tests naast elkaar worden uitgevoerd en worden alleen metrische waarden verzameld die zijn vastgelegd in een test.

Om IMeterFactory in een app te gebruiken, maakt u een type dat IMeterFactory gebruikt om de aangepaste metrische gegevens van de app te maken.

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

Registreer het type metrische gegevens bij DI in Program.cs:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ContosoMetrics>();

Injecteer waar nodig het type metrische gegevens en recordwaarden. Omdat het type metrische gegevens is geregistreerd in DI, kan het worden gebruikt met MVC-controllers, minimale API's of een ander type dat door DI wordt gemaakt:

app.MapPost("/complete-sale", (SaleModel model, ContosoMetrics metrics) =>
{
    // ... business logic such as saving the sale to a database ...

    metrics.ProductSold(model.ProductName, model.QuantitySold);
});

Als u de meter Contoso.Web wilt bewaken, gebruikt u de volgende opdracht dotnet-counters .

dotnet-counters monitor -n WebMetric --counters Contoso.Web

Uitvoer die lijkt op het volgende wordt weergegeven:

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    

Metrische gegevens weergeven in Grafana met OpenTelemetry en Prometheus

Overview

OpenTelemetry:

  • Is een leverancierneutraal opensource-project dat wordt ondersteund door de Cloud Native Computing Foundation.
  • Standaardiseert het genereren en verzamelen van telemetrie voor cloudeigen software.
  • Werkt met .NET met behulp van de metrische .NET-API's.
  • Wordt goedgekeurd door Azure Monitor en veel APM-leveranciers.

Met ingang van ASP.NET Core 11 voldoen de ingebouwde metrische gegevens en traceringen voor de HTTP-server van het framework aan de vereiste onderdelen van de OpenTelemetry-semantische conventies voor HTTP-servers. De HTTP-serveraanvraagactiviteit verzendt deze kenmerken standaard, die overeenkomen met de ingebouwde metrische gegevens. Als gevolg hiervan is het NuGet-pakket optioneel voor het OpenTelemetry.Instrumentation.AspNetCore verzamelen van metrische gegevens en traceringen van HTTP-servers. Het voorbeeld in dit artikel maakt alleen gebruik van de ingebouwde meters (Microsoft.AspNetCore.Hosting en Microsoft.AspNetCore.Server.Kestrel) en verwijst niet naar het instrumentatiepakket. Zie ASP.NET Core ingebouwde HTTP-metrische gegevens voor de lijst met ingebouwde instrumenten en hun kenmerken.

Hoewel het pakket optioneel is, is het geen drop-in equivalent van de ingebouwde instrumentatie. De ingebouwde instrumentatie omvat alleen de vereiste onderdelen van de semantische conventies. Houd rekening met de volgende verschillen voordat u het pakket verwijdert:

  • Sommige aanbevolen HTTP-serverkenmerken worden niet verzonden door de ingebouwde instrumentatie, zoals bepaalde client- en netwerkkenmerken (bijvoorbeeld client.address). Volledige ondersteuning voor het voorwaardelijk vereisteurl.query kenmerk, inclusief redaction, wordt ook nog uitgevoerd. Als u op deze kenmerken vertrouwt, moet u het pakket behouden. Zie dotnet/aspnetcore#65873 voor meer informatie.
  • Het pakket is ook handig voor het inschakelen van telemetrie buiten de HTTP-server, waaronder Blazor en SignalR. Voor tracering worden extra activiteitsbronnen geregistreerd voor SignalR (Microsoft.AspNetCore.SignalR.Serverop .NET 9 en hoger) en (Microsoft.AspNetCore.Componentsen BlazorMicrosoft.AspNetCore.Components.Server.Circuits op .NET 10 en hoger). Voor metrische gegevens schakelt het de bijbehorende ingebouwde meetinstrumenten in (zoals Microsoft.AspNetCore.Components). Zonder het pakket registreert u de bronnen zelf met AddSource en de meters met AddMeter om dezelfde telemetrie te verzamelen.

Wanneer u telemetrie toevoegt aan een app die alleen metrische gegevens en traceringen van HTTP-servers nodig heeft, kunt u vertrouwen op de ingebouwde instrumentatie en het pakket weglaten. Wanneer u een bestaande app bijwerken van .NET 10 naar .NET 11 die al naar het pakket verwijst, moet u deze behouden als u afhankelijk bent van de kenmerken, bronnen of meters die in de voorgaande lijst worden beschreven. Als u het pakket stilzwijgend verwijdert, valt die telemetrie weg.

Belangrijk

Wanneer u OpenTelemetry-tracering inschakelt (naast metrische gegevens) zonder het OpenTelemetry.Instrumentation.AspNetCore pakket, moet u de HTTP-server ActivitySource van het framework registreren zodat de aanvraagactiviteit wordt vastgelegd. De HTTP-serveractiviteitsbron van ASP.NET Core heet Microsoft.AspNetCore en het framework maakt voor elke aanvraag een requestactiviteit genaamd Microsoft.AspNetCore.Hosting.HttpRequestIn om traceringscontext te propagateren. Als de Microsoft.AspNetCore-bron niet is geregistreerd bij de OpenTelemetry-SDK, wordt de requestactiviteit niet vastgelegd en laat de standaard ParentBased sampler alle aangepaste onderliggende spans die tijdens de aanvraag zijn gestart stilzwijgend vallen.

Registreer de bron expliciet in uw bestaande traceringspijplijn:

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddSource("Microsoft.AspNetCore")
        .AddSource("MyApp"));

In het voorgaande voorbeeld:

  • AddSource("Microsoft.AspNetCore")registreert de http-serveractiviteitsbron van ASP.NET Core zodat de aanvraagactiviteit wordt vastgelegd.
  • AddSource("MyApp") registreert de eigen ActivitySourceapp. Vervang MyApp door de naam die uw app gebruikt.
  • Er wordt geen exporteur weergegeven. In dit voorbeeld wordt ervan uitgegaan dat een exporteur al is geconfigureerd in uw traceringspijplijn.

U kunt ook AddAspNetCoreInstrumentation() aanroepen vanuit het OpenTelemetry.Instrumentation.AspNetCore-pakket, dat de bron voor u registreert.

In deze zelfstudie ziet u een van de integraties die beschikbaar zijn voor metrische gegevens van OpenTelemetry met behulp van de OSS Prometheus - en Grafana-projecten . De metrische gegevensstroom:

  1. De ASP.NET Core-API's voor metrische API's registreren metingen uit de voorbeeld-app.

  2. De OpenTelemetry .NET-bibliotheek die in de app wordt uitgevoerd, voegt de metingen samen.

  3. De Prometheus-exportbibliotheek maakt de geaggregeerde gegevens beschikbaar via een eindpunt voor metrische HTTP-gegevens. 'Exporteur' is wat OpenTelemetry de bibliotheken aanroept die telemetrie verzenden naar leverancierspecifieke back-ends.

  4. Een Prometheus-server:

    • Peilt het eindpunt voor metrische gegevens.
    • Leest de gegevens.
    • Slaat de gegevens op in een database voor persistentie op lange termijn. Prometheus verwijst naar het lezen en opslaan van gegevens als het scrapen van een eindpunt.
    • Kan worden uitgevoerd op een andere computer.
  5. De Grafana-server:

    • Query's uitvoeren op de gegevens die zijn opgeslagen in Prometheus en deze weergeven op een bewakingsdashboard op internet.
    • Kan worden uitgevoerd op een andere computer.

Metrische gegevens weergeven vanuit voorbeeld-app

Ga naar de voorbeeld-app. De browser toont Hello OpenTelemetry! ticks:<3digits>, waarbij 3digits de laatste drie cijfers zijn van de huidige DateTime.Ticks.

Voeg toe /metrics aan de URL om het eindpunt voor metrische gegevens weer te geven. In de browser worden de verzamelde metrische gegevens weergegeven:

metrische gegevens 2

Prometheus instellen en configureren

Volg de eerste stappen van Prometheus om een Prometheus-server in te stellen en te bevestigen dat deze werkt.

Wijzig het prometheus.yml configuratiebestand zodat Prometheus het eindpunt voor metrische gegevens verwijdert dat de voorbeeld-app beschikbaar maakt. Voeg de volgende gemarkeerde tekst toe in de scrape_configs sectie:

# 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.

Vervang 5045 in de hierboven gemarkeerde YAML door het poortnummer dat door de voorbeeldtoepassing wordt gebruikt.

Prometheus starten

  1. Laad de configuratie opnieuw of start de Prometheus-server opnieuw op.
  2. Controleer of OpenTelemetryTest de UP-status heeft op de pagina Statusdoelen> van de Prometheus-webportal.

Prometheus-status

Selecteer het pictogram Metrische verkenner openen om beschikbare metrische gegevens weer te geven:

Prometheus open_metric_exp

Voer een itemcategorie in, zoals http_ in het invoervak Expressie om de beschikbare metrische gegevens weer te geven:

beschikbare metrische gegevens

U kunt ook een tellercategorie invoeren, zoals kestrel in het invoervak Expressie , om de beschikbare metrische gegevens weer te geven:

Prometheus kestrel

Metrische gegevens weergeven op een Grafana-dashboard

dashboard-screenshot2

Metrische gegevens testen in ASP.NET Core-apps

U kunt metrische gegevens testen in ASP.NET Core apps. Een manier om dit te doen, is door metrische waarden te verzamelen en te bevestigen in ASP.NET Core integratietests met behulp van 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"]);
            });
    }
}

De voorgaande test:

  • Initialiseert een webapplicatie in het geheugen met WebApplicationFactory<TEntryPoint>. Program in het algemene argument van de factory geeft u de web-app op.
  • Verzamelt metrische waarden met MetricCollector<T>
    • Vereist een pakketreferentie naar Microsoft.Extensions.Diagnostics.Testing.
    • De MetricCollector<T> wordt gemaakt met behulp van de IMeterFactory van de webapplicatie. Hierdoor kan de collector alleen metrische gegevens rapporteren die zijn vastgelegd door de test.
    • Bevat de meternaam, Microsoft.AspNetCore.Hosting, en de naam van de teller, http.server.request.duration om te verzamelen.
  • Hiermee wordt een HTTP-aanvraag naar de web-app verzonden.
  • Valideert de test met behulp van de resultaten van de metriekverzamelaar.

ASP.NET Core Identity metrieken

Identity ASP.NET Core waarneembaarheid helpt u bij het bewaken van activiteiten en verificatieprocessen voor gebruikersbeheer.

De metrische gegevens bevinden zich in de Microsoft.AspNetCore.Identity meter en worden beschreven in de volgende secties.

Metrische gegevens over gebruikersbeheer

  • aspnetcore.identity.user.create.duration meet de duur van gebruikerscreaties.
  • aspnetcore.identity.user.update.duration meet de duur van updatebewerkingen van gebruikers.
  • aspnetcore.identity.user.delete.duration meet de duur van bewerkingen voor het verwijderen van gebruikers.
  • aspnetcore.identity.user.check_password_attempts telt pogingen voor wachtwoordverificatie.
  • aspnetcore.identity.user.generated_tokens telt tokens die zijn gegenereerd voor gebruikers, zoals tokens voor het opnieuw instellen van wachtwoorden.
  • aspnetcore.identity.user.verify_token_attempts telt tokenverificatiepogingen.

Authenticatie meetgegevens

  • aspnetcore.identity.sign_in.authenticate.duration meet de duur van verificatiebewerkingen.
  • aspnetcore.identity.sign_in.check_password_attempts telt pogingen voor wachtwoordcontrole tijdens het aanmelden.
  • aspnetcore.identity.sign_in.sign_ins telt geslaagde aanmeldingen.
  • aspnetcore.identity.sign_in.sign_outs telt afmeldingen.
  • aspnetcore.identity.sign_in.two_factor_clients_remembered telt onthouden tweefactorklanten.
  • aspnetcore.identity.sign_in.two_factor_clients_forgotten telt vergeten tweeledige clients.

Gebruik deze metrische gegevens om:

  • Gebruikersregistratie en -beheer bewaken.
  • Houd verificatiepatronen en mogelijke beveiligingsproblemen bij.
  • Meet de prestaties van Identity bewerkingen.
  • Bekijk het gebruik van tweeledige verificatie.

Metrische gegevens weergeven Identity

Gebruik dotnet-counters dit om deze metrische gegevens weer te geven en deze in realtime te bewaken. Of exporteer ze naar Prometheus en visualiseer ze in Grafana met behulp van de technieken die eerder in dit artikel zijn beschreven.

Als u bijvoorbeeld alle Identity metrische gegevens wilt bewaken met dotnet-counters:

dotnet-counters monitor -n YourAppName --counters Microsoft.AspNetCore.Identity

ASP.NET Kernmeters en tellers

Zie ASP.NET Core-metriek voor een lijst van ASP.NET Core-meters en -tellers. In ASP.NET Core 11 en hoger verzenden de ingebouwde HTTP-servermeters (bijvoorbeeld Microsoft.AspNetCore.Hosting en Microsoft.AspNetCore.Server.Kestrel) gegevens die voldoen aan de vereiste onderdelen van de semantische http-serverconventies van OpenTelemetry. U kunt deze meters gebruiken met de OpenTelemetry SDK zonder het OpenTelemetry.Instrumentation.AspNetCore pakket.