Delen via


Steekproeven in Application Insights

Sampling is een functie in Application Insights. Het is de aanbevolen manier om telemetrieverkeer, gegevenskosten en opslagkosten te verminderen, terwijl u een statistisch juiste analyse van toepassingsgegevens behoudt. Met sampling kunt u ook voorkomen dat Application Insights uw telemetrie beperkt. Het steekproeffilter selecteert items die gerelateerd zijn, zodat u tussen items kunt navigeren wanneer u diagnostische onderzoeken uitvoert.

Wanneer het aantal metrische gegevens wordt weergegeven in de portal, worden ze opnieuw genormaliseerd om rekening te houden met steekproeven. Hierdoor wordt elk effect op de statistieken geminimaliseerd.

Notitie

  • Als u onze OpenTelemetry Distro hebt aangenomen en op zoek bent naar configuratieopties, raadpleegt u Sampling inschakelen.

Notitie

De volgende documentatie is afhankelijk van de klassieke Application Insights-API. Het langetermijnplan voor Application Insights is het verzamelen van gegevens met behulp van OpenTelemetry. Zie Azure Monitor OpenTelemetry inschakelen voor .NET-, Node.js-, Python- en Java-toepassingen en onze OpenTelemetry Roadmap voor meer informatie. Migratierichtlijnen zijn beschikbaar voor .NET, Node.js en Python.

Een schermopname van de configuratieopties voor steekproeven.

Korte samenvatting

  • Er zijn drie verschillende soorten steekproeven: adaptieve steekproeven, steekproeven met vaste snelheid en opnamesteekproeven.
  • Adaptieve steekproeven zijn standaard ingeschakeld in alle nieuwste versies van de Application Insights-ASP.NET en ASP.NET Core Software Development Kits (SDK's) en Azure Functions.
  • Steekproeven met vaste frequentie zijn beschikbaar in recente versies van de Application Insights SDK's voor ASP.NET, ASP.NET Core, Java (zowel de agent als de SDK), JavaScript en Python.
  • In Java zijn steekproeven overrides beschikbaar en zijn ze handig wanneer u verschillende steekproeffrequenties moet toepassen op geselecteerde afhankelijkheden, aanvragen en statuscontroles. Gebruik steekproeven om bepaalde ruisafhankelijkheden af te stemmen, terwijl bijvoorbeeld alle belangrijke fouten 100% worden bewaard. Dit gedrag is een vorm van vaste steekproeven waarmee u een nauwkeurig controleniveau over uw telemetrie krijgt.
  • Opnamesampling werkt op het Application Insights-service-eindpunt. Deze is alleen van toepassing wanneer er geen andere steekproeven van kracht zijn. Als de SDK uw telemetrie steekt, is opnamesampling uitgeschakeld.
  • Als u voor webtoepassingen aangepaste gebeurtenissen aanmeldt en ervoor moet zorgen dat een set gebeurtenissen samen wordt bewaard of verwijderd, moeten de gebeurtenissen dezelfde OperationId waarde hebben.
  • Als u Analytics-query's schrijft, moet u rekening houden met steekproeven. In het bijzonder, in plaats van alleen records te tellen, moet u gebruiken summarize sum(itemCount).
  • Sommige telemetrietypen, waaronder metrische prestatiegegevens en aangepaste metrische gegevens, worden altijd bewaard, ongeacht of steekproeven zijn ingeschakeld of niet.

De volgende tabel bevat een overzicht van de steekproeftypen die beschikbaar zijn voor elke SDK en het type toepassing:

Application Insights SDK Adaptieve steekproeven ondersteund Ondersteunde steekproeven met vaste frequentie Ondersteunde opnamesampling
ASP.NET Ja (standaard ingeschakeld) Ja Alleen als er geen andere steekproeven van kracht zijn
ASP.NET Core Ja (standaard ingeschakeld) Ja Alleen als er geen andere steekproeven van kracht zijn
Azure Functions Ja (standaard ingeschakeld) Nee Alleen als er geen andere steekproeven van kracht zijn
Java Nr. Ja Alleen als er geen andere steekproeven van kracht zijn
JavaScript Nr. Ja Alleen als er geen andere steekproeven van kracht zijn
Node.JS Nr. Ja Alleen als er geen andere steekproeven van kracht zijn
Python Nr. Ja Alleen als er geen andere steekproeven van kracht zijn
Alle anderen Nee No Ja

Notitie

  • De Java Application Agent 3.4.0 en hoger maakt gebruik van frequentiebeperking als standaard steekproef bij het verzenden van telemetrie naar Application Insights. Zie Voor meer informatie een steekproef met een snelheidsbeperking.
  • De informatie op de meeste van deze pagina is van toepassing op de huidige versies van de Application Insights SDK's. Zie oudere SDK-versies voor informatie over oudere versies van de SDK's.

Wanneer steekproeven worden gebruikt

Over het algemeen hebt u voor de meeste kleine en middelgrote toepassingen geen steekproeven nodig. De nuttigste diagnostische gegevens en de meest nauwkeurige statistieken worden verkregen door gegevens te verzamelen over al uw gebruikersactiviteiten.

De belangrijkste voordelen van steekproeven zijn:

  • De Application Insights-service daalt gegevenspunten ('beperkingen') wanneer uw app een hoge telemetriesnelheid verzendt in een kort tijdsinterval. Steekproeven verminderen de kans dat uw toepassing beperkingen ziet optreden.
  • Als u binnen het quotum van gegevenspunten voor uw prijscategorie wilt blijven.
  • Om het netwerkverkeer te verminderen van de verzameling telemetriegegevens.

Hoe steekproeven werken

Het sampling-algoritme bepaalt welke telemetrie-items worden bijgehouden of verwijderd, ongeacht of de SDK of Application Insights-service de steekproeven doet. Het volgt regels om alle gerelateerde gegevenspunten intact te houden, zodat Application Insights een bruikbare en betrouwbare diagnostische ervaring biedt, zelfs met minder gegevens. Als een voorbeeld bijvoorbeeld een mislukte aanvraag bevat, worden alle gerelateerde telemetrie-items, zoals uitzonderingen en traceringen, bewaard. Op deze manier ziet u, wanneer u aanvraagdetails bekijkt in Application Insights, altijd de aanvraag en de bijbehorende telemetriegegevens.

De steekproefbeslissing is gebaseerd op de bewerkings-id van de aanvraag, wat betekent dat alle telemetrie-items van een bepaalde bewerking behouden of verwijderd zijn. Voor de telemetrie-items die geen bewerkings-id-set hebben (zoals telemetrie-items die zijn gerapporteerd vanuit asynchrone threads zonder HTTP-context), worden eenvoudigweg een percentage telemetrie-items van elk type vastgelegd.

Wanneer u telemetrie weer aan u presenteert, past de Application Insights-service de metrische gegevens aan met hetzelfde steekproefpercentage dat op het moment van de verzameling is gebruikt om de ontbrekende gegevenspunten te compenseren. Daarom zien de gebruikers bij het bekijken van de telemetrie in Application Insights statistisch juiste benaderingen die dicht bij de reële getallen liggen.

De nauwkeurigheid van de benadering hangt grotendeels af van het geconfigureerde steekproefpercentage. Bovendien neemt de nauwkeurigheid toe voor toepassingen die een groot aantal vergelijkbare aanvragen verwerken van veel gebruikers. Aan de andere kant, voor toepassingen die niet met een aanzienlijke belasting werken, is steekproeven niet nodig, omdat deze toepassingen meestal al hun telemetrie kunnen verzenden terwijl ze binnen het quotum blijven, zonder dat gegevensverlies wordt veroorzaakt door beperking.

Soorten steekproeven

Er zijn drie verschillende steekproefmethoden:

  • Met adaptieve steekproeven wordt automatisch het volume van telemetrie aangepast dat wordt verzonden vanuit de SDK in uw ASP.NET/ASP.NET Core-app en vanuit Azure Functions. Dit is de standaardsampling wanneer u de ASP.NET of ASP.NET Core SDK gebruikt. Adaptieve steekproeven zijn momenteel alleen beschikbaar voor ASP.NET/ASP.NET Core-telemetrie op de server en voor Azure Functions.

  • Met sampling met vaste frequentie wordt het volume van telemetrie verminderd dat wordt verzonden vanaf zowel uw ASP.NET als ASP.NET Core- of Java-server en vanuit de browsers van uw gebruikers. U stelt het tarief in. De client en server synchroniseren hun steekproeven, zodat u in Zoeken tussen gerelateerde paginaweergaven en aanvragen kunt navigeren.

  • Opnamesampling vindt plaats op het Service-eindpunt van Application Insights. Hiermee worden enkele telemetriegegevens verwijderd die afkomstig zijn van uw app, met een steekproeffrequentie die u hebt ingesteld. Het vermindert geen telemetrieverkeer dat vanuit uw app wordt verzonden, maar helpt u om binnen uw maandelijkse quotum te blijven. Het belangrijkste voordeel van opnamesampling is dat u de steekproeffrequentie kunt instellen zonder uw app opnieuw te implementeren. Opnamesampling werkt uniform voor alle servers en clients, maar is niet van toepassing wanneer andere typen steekproeven worden uitgevoerd.

Belangrijk

Als adaptieve of vaste frequentiesamplingmethoden zijn ingeschakeld voor een telemetrietype, wordt opnamesampling uitgeschakeld voor die telemetrie. Telemetrietypen die worden uitgesloten van steekproeven op SDK-niveau, zijn echter nog steeds onderworpen aan opnamesampling met de snelheid die is ingesteld in de portal.

Adaptieve steekproeven

Adaptieve steekproeven zijn van invloed op het volume van telemetrie dat vanuit uw webserver-app naar het Application Insights-service-eindpunt wordt verzonden.

Tip

Adaptieve steekproeven worden standaard ingeschakeld wanneer u de ASP.NET SDK of de ASP.NET Core SDK gebruikt en ook standaard is ingeschakeld voor Azure Functions.

Het volume wordt automatisch aangepast om binnen de MaxTelemetryItemsPerSecond frequentielimiet te blijven. Als de toepassing lage telemetrie genereert, zoals tijdens foutopsporing of weinig gebruik, worden er geen items verwijderd zolang het volume onder MaxTelemetryItemsPerSecondblijft. Naarmate het telemetrievolume toeneemt, wordt de steekproeffrequentie aangepast om het doelvolume te bereiken. Deze aanpassing, herberekend met regelmatige tussenpozen, is gebaseerd op het zwevende gemiddelde van de uitgaande transmissiesnelheid.

Om het doelvolume te bereiken, wordt een deel van de gegenereerde telemetrie verwijderd. Maar net als bij andere soorten steekproeven behoudt het algoritme gerelateerde telemetrie-items. Wanneer u bijvoorbeeld de telemetrie in Zoeken inspecteert, kunt u de aanvraag vinden die betrekking heeft op een bepaalde uitzondering.

Metrische aantallen, zoals aanvraagsnelheid en uitzonderingsfrequentie, worden aangepast om de steekproeffrequentie te compenseren, zodat ze geschatte waarden weergeven in Metric Explorer.

Adaptieve steekproeven configureren voor ASP.NET toepassingen

Notitie

Deze sectie is van toepassing op ASP.NET toepassingen, niet op ASP.NET Core-toepassingen. Meer informatie over het configureren van adaptieve steekproeven voor ASP.NET Core-toepassingen verderop in dit document.

In ApplicationInsights.configkunt u verschillende parameters in het AdaptiveSamplingTelemetryProcessor knooppunt aanpassen. De weergegeven afbeeldingen zijn de standaardwaarden:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    De doelsnelheid van logische bewerkingen die het adaptieve algoritme wil verzamelen op elke serverhost. Als uw web-app wordt uitgevoerd op veel hosts, vermindert u deze waarde om binnen uw doelsnelheid van verkeer te blijven in de Application Insights-portal.

  • <EvaluationInterval>00:00:15</EvaluationInterval>

    Het interval waarmee de huidige snelheid van telemetrie opnieuw wordt geëvalueerd. Evaluatie wordt uitgevoerd als een zwevend gemiddelde. Mogelijk wilt u dit interval verkorten als uw telemetrie plotselinge pieken kan opleveren.

  • <SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>

    Wanneer de waarde van het steekproefpercentage wordt gewijzigd, wordt bepaald hoe snel we het steekproefpercentage opnieuw kunnen verminderen om minder gegevens vast te leggen.

  • <SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>

    Wanneer de waarde van het steekproefpercentage wordt gewijzigd, wordt bepaald hoe snel we het steekproefpercentage opnieuw kunnen verhogen om meer gegevens vast te leggen.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Naarmate het steekproefpercentage varieert, wat is de minimumwaarde die we mogen instellen?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Naarmate het steekproefpercentage varieert, wat is de maximumwaarde die we mogen instellen?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    In de berekening van het zwevende gemiddelde geeft deze waarde het gewicht aan dat moet worden toegewezen aan de meest recente waarde. Gebruik een waarde die gelijk is aan of kleiner is dan 1. Kleinere waarden zorgen ervoor dat het algoritme minder reactief is op plotselinge wijzigingen.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    De hoeveelheid telemetrie die moet worden genomen wanneer de app wordt gestart. Verminder deze waarde niet terwijl u foutopsporing uitvoert.

  • <ExcludedTypes>type;type</ExcludedTypes>

    Een door puntkomma's gescheiden lijst met typen waarvoor u geen steekproeven wilt nemen. Herkende typen zijn: Dependency, Event, Exception, PageView, , Request. Trace Alle telemetriegegevens van de opgegeven typen worden verzonden; de typen die niet zijn opgegeven, worden gesampleerd.

  • <IncludedTypes>type;type</IncludedTypes>

    Een door puntkomma's gescheiden lijst met typen waarvoor u steekproeven wilt uitvoeren. Herkende typen zijn: Dependency, Event, Exception, PageView, , Request. Trace De opgegeven typen worden gemonsterd; alle telemetrie van de andere typen wordt altijd verzonden.

Als u adaptieve steekproeven wilt uitschakelen , verwijdert u de AdaptiveSamplingTelemetryProcessor knooppunten uit ApplicationInsights.config.

Alternatief: Adaptieve steekproeven configureren in code

In plaats van de samplingparameter in het .config bestand in te stellen, kunt u deze waarden programmatisch instellen.

  1. Verwijder alle AdaptiveSamplingTelemetryProcessor knooppunten uit het .config bestand.

  2. Gebruik het volgende fragment om adaptieve steekproeven te configureren:

    using Microsoft.ApplicationInsights;
    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    
    // ...
    
    var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
    // Enable AdaptiveSampling so as to keep overall telemetry volume to 5 items per second.
    builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5);
    
    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();
    

    (Meer informatie over telemetrieprocessors.)

U kunt ook de steekproeffrequentie voor elk telemetrietype afzonderlijk aanpassen of zelfs bepaalde typen uitsluiten van het nemen van steekproeven:

// The following configures adaptive sampling with 5 items per second, and also excludes Dependency telemetry from being subjected to sampling.
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

Adaptieve steekproeven configureren voor ASP.NET Core-toepassingen

ASP.NET Core-toepassingen kunnen worden geconfigureerd in code of via het appsettings.json bestand. Zie Configuratie in ASP.NET Core voor meer informatie.

Adaptieve steekproeven zijn standaard ingeschakeld voor alle ASP.NET Core-toepassingen. U kunt het steekproefgedrag uitschakelen of aanpassen.

Adaptieve steekproeven uitschakelen

De standaardsamplingfunctie kan worden uitgeschakeld tijdens het toevoegen van de Application Insights-service.

Voeg ApplicationInsightsServiceOptions na de WebApplication.CreateBuilder() methode in het Program.cs bestand toe:

var builder = WebApplication.CreateBuilder(args);

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);

var app = builder.Build();

Met de bovenstaande code wordt adaptieve steekproeven uitgeschakeld. Volg de volgende stappen om steekproeven toe te voegen met meer aanpassingsopties.

Sampling-instellingen configureren

Gebruik de volgende uitbreidingsmethoden om het gedrag van TelemetryProcessorChainBuilder steekproeven aan te passen.

Belangrijk

Als u deze methode gebruikt om steekproeven te configureren, moet u de aiOptions.EnableAdaptiveSampling eigenschap false instellen op wanneer u aanroept AddApplicationInsightsTelemetry(). Nadat u deze wijziging hebt aangebracht, moet u de instructies in het volgende codeblok exact volgen om adaptieve steekproeven opnieuw in te schakelen met uw aanpassingen. Als u dit niet doet, kan dit leiden tot overtollige gegevensopname. Test altijd na het wijzigen van sampling-instellingen en stel een geschikte dagelijkse gegevenslimiet in om uw kosten te beheren.

using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;

var builder = WebApplication.CreateBuilder(args);

builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
   var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;

   // Using adaptive sampling
   telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);

   // Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
   // telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");

   telemetryProcessorChainBuilder.Build();
});

builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
   EnableAdaptiveSampling = false,
});

var app = builder.Build();

U kunt andere sampling-instellingen aanpassen met behulp van de klasse SamplingPercentageEstimatorSettings :

using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;

telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
     MinSamplingPercentage = 0.01,
     MaxSamplingPercentage = 100,
     MaxTelemetryItemsPerSecond = 5
 }, null, excludedTypes: "Dependency"); 

Adaptieve steekproeven configureren voor Azure Functions

Volg de instructies op deze pagina om adaptieve steekproeven te configureren voor apps die worden uitgevoerd in Azure Functions.

Steekproeven met vaste frequentie

Sampling met vaste frequentie vermindert het verkeer dat wordt verzonden vanaf uw webserver en webbrowsers. In tegenstelling tot adaptieve steekproeven vermindert het telemetrie met een vaste snelheid die door u is bepaald. Steekproeven met vaste frequentie zijn beschikbaar voor ASP.NET- ASP.NET Core-, Java- en Python-toepassingen.

Net als bij andere technieken worden ook gerelateerde items bewaard. Ook worden de client- en serversampling gesynchroniseerd, zodat gerelateerde items worden bewaard. Als u bijvoorbeeld een paginaweergave bekijkt in Search, kunt u de gerelateerde serveraanvragen vinden.

In Metrics Explorer worden tarieven zoals aanvraag- en uitzonderingsaantallen vermenigvuldigd met een factor om de steekproeffrequentie te compenseren, zodat ze zo nauwkeurig mogelijk zijn.

Vaste steekproefsampling configureren voor ASP.NET toepassingen

  1. Schakel adaptieve steekproeven uit: Verwijder ApplicationInsights.configof markeer het AdaptiveSamplingTelemetryProcessor knooppunt als commentaar.

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Schakel de module voor steekproeven met vaste frequentie in. Voeg dit fragment toe aan ApplicationInsights.config:

    In dit voorbeeld is SamplingPercentage 20, dus 20% van alle items wordt gemonsterd. Waarden in Metrics Explorer worden vermenigvuldigd met (100/20) = 5 om te compenseren.

    <TelemetryProcessors>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <!-- Set a percentage close to 100/N where N is an integer. -->
            <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
            <SamplingPercentage>20</SamplingPercentage>
        </Add>
    </TelemetryProcessors>
    

    U kunt deze waarden ook programmatisch instellen in plaats van de samplingparameter in het ApplicationInsights.config bestand in te stellen:

    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    
    // ...
    
    var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
    
    builder.UseSampling(10.0); // percentage
    
    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();
    

    (Meer informatie over telemetrieprocessors.)

Vaste-frequentiesampling configureren voor ASP.NET Core-toepassingen

  1. Adaptieve steekproeven uitschakelen

    Wijzigingen kunnen worden aangebracht na de WebApplication.CreateBuilder() methode, met behulp van ApplicationInsightsServiceOptions:

    var builder = WebApplication.CreateBuilder(args);
    
    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    builder.Services.AddApplicationInsightsTelemetry(aiOptions);
    
    var app = builder.Build();
    
  2. De module voor steekproeven met vaste frequentie inschakelen

    Wijzigingen kunnen worden aangebracht na de WebApplication.CreateBuilder() methode:

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
    {
        var builder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
        builder.Build();
    });
    
    builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
    {
        EnableAdaptiveSampling = false,
    });
    
    var app = builder.Build(); 
    

Sampling-onderdrukkingen en vaste steekproefsampling configureren voor Java-toepassingen

Standaard is er geen steekproeven ingeschakeld in de Java autoinstrumentation en SDK. Op dit moment worden de automatische instrumentatie van Java, steekproeven en steekproeven met vaste snelheid ondersteund. Adaptieve steekproeven worden niet ondersteund in Java.

Java autoinstrumentation configureren

Notitie

Kies voor het steekproefpercentage een percentage dat zich dicht bij 100/N bevindt, waarbij N een geheel getal is. Op dit moment biedt steekproeven geen ondersteuning voor andere waarden.

Vaste frequentiesampling configureren voor OpenCensus Python-toepassingen

Instrumenteer uw toepassing met de nieuwste OpenCensus Azure Monitor-exporteurs.

Notitie

Steekproeven met vaste frequentie zijn niet beschikbaar voor de exporteur van metrische gegevens. Dit betekent dat aangepaste metrische gegevens de enige typen telemetrie zijn waarbij steekproeven NIET kunnen worden geconfigureerd. De exporteur van metrische gegevens verzendt alle telemetriegegevens die worden bijgehouden.

Steekproeven met vaste frequentie voor tracering

U kunt een sampler onderdeel van uw Tracer configuratie opgeven. Als er geen expliciete sampler wordt opgegeven, wordt deze ProbabilitySampler standaard gebruikt. Het ProbabilitySampler zou standaard een frequentie van 1/10000 gebruiken, wat betekent dat een van de 10.000 aanvragen naar Application Insights wordt verzonden. Als u een steekproeffrequentie wilt opgeven, raadpleegt u de volgende details.

Als u de steekproeffrequentie wilt opgeven, moet u ervoor zorgen dat u Tracer een sampler opgeeft met een steekproeffrequentie tussen 0,0 en 1,0. Een steekproeffrequentie van 1,0 vertegenwoordigt 100%, wat betekent dat al uw aanvragen worden verzonden als telemetrie naar Application Insights.

tracer = Tracer(
    exporter=AzureExporter(
        instrumentation_key='00000000-0000-0000-0000-000000000000',
    ),
    sampler=ProbabilitySampler(1.0),
)

Vaste frequentiesampling voor logboeken

U kunt steekproeven AzureLogHandler met vaste frequentie configureren door het logging_sampling_rate optionele argument te wijzigen. Als er geen argument wordt opgegeven, wordt een steekproeffrequentie van 1,0 gebruikt. Een steekproeffrequentie van 1,0 vertegenwoordigt 100%, wat betekent dat al uw aanvragen worden verzonden als telemetrie naar Application Insights.

handler = AzureLogHandler(
    instrumentation_key='00000000-0000-0000-0000-000000000000',
    logging_sampling_rate=0.5,
)

Vaste frequentiesampling configureren voor webpagina's met JavaScript

Op JavaScript gebaseerde webpagina's kunnen worden geconfigureerd voor het gebruik van Application Insights. Telemetrie wordt verzonden vanuit de clienttoepassing die wordt uitgevoerd in de browser van de gebruiker en de pagina's kunnen vanaf elke server worden gehost.

Wanneer u uw op JavaScript gebaseerde webpagina's voor Application Insights configureert, wijzigt u het JavaScript-fragment dat u krijgt uit de Application Insights-portal.

Tip

In ASP.NET apps waarin JavaScript is opgenomen, wordt het fragment meestal gebruikt _Layout.cshtml.

Voeg een lijn in zoals samplingPercentage: 10, vóór de instrumentatiesleutel:

<script>
    var appInsights = // ... 
    ({ 
      // Value must be 100/N where N is an integer.
      // Valid examples: 50, 25, 20, 10, 5, 1, 0.1, ...
      samplingPercentage: 10, 

      instrumentationKey: ...
    }); 

    window.appInsights = appInsights; 
    appInsights.trackPageView(); 
</script>

Notitie

Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeks s om te profiteren van nieuwe mogelijkheden.

Kies voor het steekproefpercentage een percentage dat zich dicht bij 100/N bevindt, waarbij N een geheel getal is. Op dit moment biedt steekproeven geen ondersteuning voor andere waarden.

Coördinatie van steekproeven aan de serverzijde en aan de clientzijde

De JavaScript SDK aan de clientzijde neemt deel aan steekproeven met vaste frequentie met de SDK aan de serverzijde. De geïnstrueerde pagina's verzenden alleen telemetrie aan de clientzijde van dezelfde gebruiker waarvoor de SDK aan de serverzijde de beslissing heeft genomen om deze op te nemen in de steekproef. Deze logica is ontworpen om de integriteit van gebruikerssessies in client- en servertoepassingen te behouden. Als gevolg hiervan kunt u vanuit elk bepaald telemetrie-item in Application Insights alle andere telemetrie-items voor deze gebruiker of sessie vinden en in Search navigeren tussen gerelateerde paginaweergaven en aanvragen.

Als uw telemetrie aan de client- en serverzijde geen gecoördineerde voorbeelden weergeeft:

  • Controleer of u steekproeven hebt ingeschakeld op zowel de server als de client.
  • Controleer of u hetzelfde steekproefpercentage instelt op zowel de client als de server.
  • Zorg ervoor dat de SDK-versie 2.0 of hoger is.

Opnamesteekproeven

Opnamesampling werkt op het moment waarop de telemetrie van uw webserver, browsers en apparaten het Application Insights-service-eindpunt bereikt. Hoewel het telemetrieverkeer dat vanuit uw app wordt verzonden, niet vermindert, wordt het aantal verwerkte en bewaarde (en in rekening gebrachte) door Application Insights verminderd.

Gebruik dit type steekproeven als uw app vaak het maandelijkse quotum heeft overschreden en u geen van de SDK-typen steekproeven kunt gebruiken.

Stel de steekproeffrequentie in op de pagina Gebruik en geschatte kosten:

Selecteer in het deelvenster Overzicht van de toepassing instellingen, quota, voorbeelden, selecteer vervolgens een steekproeffrequentie en selecteer Bijwerken.

Net als bij andere soorten steekproeven behoudt het algoritme gerelateerde telemetrie-items. Wanneer u bijvoorbeeld de telemetrie in Zoeken inspecteert, kunt u de aanvraag vinden die betrekking heeft op een bepaalde uitzondering. Metrische tellingen, zoals aanvraagsnelheid en uitzonderingsfrequentie, worden correct bewaard.

Steekproeven verwijderen bepaalde gegevenspunten, waardoor ze niet beschikbaar zijn in een Application Insights-functie, zoals Continue export.

Opnamesampling werkt niet naast adaptieve of vaste-snelheidssampling. Adaptieve steekproeven worden automatisch geactiveerd met de ASP.NET SDK, de ASP.NET Core SDK, in Azure-app Service of met de Application Insights-agent. Wanneer het Application Insights-service-eindpunt telemetrie ontvangt en een steekproeffrequentie van minder dan 100% detecteert (wat actieve steekproeven aangeeft), wordt elke ingestelde opnamesamplingsnelheid genegeerd.

Waarschuwing

De waarde die op de portaltegel wordt weergegeven, geeft de waarde aan die u hebt ingesteld voor opnamesampling. Het vertegenwoordigt niet de werkelijke steekproeffrequentie als er een soort SDK-sampling (adaptieve of vaste-snelheidssampling) wordt uitgevoerd.

Welk type steekproeven moet ik gebruiken?

Gebruik opnamesampling als:

  • U gebruikt vaak uw maandelijkse quotum voor telemetrie.
  • U krijgt te veel telemetrie van de webbrowsers van uw gebruikers.
  • U gebruikt een versie van de SDK die geen ondersteuning biedt voor steekproeven, bijvoorbeeld ASP.NET versies ouder dan 2.0.

Gebruik steekproeven met vaste frequentie als:

  • U hebt gesynchroniseerde steekproeven tussen client en server nodig om te navigeren tussen gerelateerde gebeurtenissen. Bijvoorbeeld paginaweergaven en HTTP-aanvragen in Zoeken tijdens het onderzoeken van gebeurtenissen.
  • U bent zeker van het juiste steekproefpercentage voor uw app. Het moet hoog genoeg zijn om nauwkeurige metrische gegevens te krijgen, maar onder het tarief dat uw prijsquotum en de beperkingslimieten overschrijdt.

Adaptieve steekproeven gebruiken:

Als de voorwaarden voor het gebruik van de andere vormen van steekproeven niet van toepassing zijn, raden we adaptieve steekproeven aan. Deze instelling is standaard ingeschakeld in de ASP.NET/ASP.NET Core SDK. Het vermindert het verkeer pas als een bepaald minimumtarief is bereikt, waardoor sites met weinig gebruik waarschijnlijk helemaal niet worden bemonsterd.

Weten wanneer voorbeelden actief zijn

Gebruik een analysequery om de steekproeffrequentie te vinden.

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

Als u ziet dat RetainedPercentage voor elk type kleiner is dan 100, wordt er een steekproef genomen van dat type telemetrie.

Belangrijk

Application Insights bevat geen voorbeelden van sessie-, metrische gegevens (inclusief aangepaste metrische gegevens) of telemetrietypen voor prestatiemeteritems in een van de steekproeftechnieken. Deze typen worden altijd uitgesloten van steekproeven als een vermindering van de precisie kan zeer ongewenst zijn voor deze telemetrietypen.

Nauwkeurigheid van logboekquery's en grote samplehoeveelheden

Wanneer de toepassing omhoog wordt geschaald, kan deze tientallen, honderden of duizenden werkitems per seconde verwerken. Het vastleggen van een gebeurtenis voor elk van deze gebeurtenissen is geen resource of rendabel. Application Insights maakt gebruik van steekproeven om zich aan te passen aan het groeiende telemetrievolume op een flexibele manier en om het resourcegebruik en de kosten te beheren.

Waarschuwing

De integriteit van een end-to-end-weergave van een gedistribueerde bewerking kan worden beïnvloed als een toepassing in de gedistribueerde bewerking steekproeven heeft ingeschakeld. Er worden verschillende steekproeven genomen door elke toepassing in een gedistribueerde bewerking, dus telemetrie voor één bewerkings-id kan door de ene toepassing worden opgeslagen terwijl andere toepassingen besluiten de telemetrie voor dezelfde bewerkings-id niet te samplen.

Naarmate de steekproefsnelheden toenemen, nemen de nauwkeurigheid van logboekquery's af en worden ze vergroot. Dit heeft alleen invloed op de nauwkeurigheid van query's op basis van logboeken wanneer steekproeven zijn ingeschakeld en de steekproeffrequenties zich in een hoger bereik bevinden (~ 60%). De impact varieert op basis van telemetrietypen, het aantal telemetriegegevens per bewerking en andere factoren.

SDK's maken gebruik van vooraf geaggregeerde metrische gegevens om problemen op te lossen die worden veroorzaakt door steekproeven. Zie Azure-toepassing Insights - Azure Monitor | Microsoft Docs. De SDK's identificeren relevante eigenschappen van vastgelegde gegevens en extraheer statistieken voordat ze een steekproef nemen. Om het gebruik van resources en kosten te minimaliseren, worden metrische gegevens samengevoegd. Dit proces resulteert in een paar metrische telemetrie-items per minuut, in plaats van duizenden gebeurtenistelemetrie-items. Deze metrische gegevens kunnen bijvoorbeeld 'deze web-app verwerkt 25 aanvragen' rapporteren aan het MDM-account, met een itemCount waarde van 100 in de verzonden telemetrierecord voor aanvragen. Deze vooraf geaggregeerde metrische gegevens bieden nauwkeurige getallen en zijn betrouwbaar, zelfs wanneer steekproeven van invloed zijn op queryresultaten op basis van logboeken. U kunt ze weergeven in het deelvenster Metrische gegevens van de Application Insights-portal.

Veelgestelde vragen

Heeft steekproeven invloed op de nauwkeurigheid van waarschuwingen?

  • Ja. Waarschuwingen kunnen alleen worden geactiveerd bij voorbeeldgegevens. Agressief filteren kan ertoe leiden dat waarschuwingen niet worden geactiveerd zoals verwacht.

Notitie

Steekproeven worden niet toegepast op metrische gegevens, maar metrische gegevens kunnen worden afgeleid van voorbeeldgegevens. Op deze manier kan steekproeven indirect van invloed zijn op de nauwkeurigheid van waarschuwingen.

Wat is het standaardgedrag voor steekproeven in de ASP.NET en ASP.NET Core SDK's?

  • Als u een van de nieuwste versies van de bovenstaande SDK gebruikt, is Adaptive Sampling standaard ingeschakeld met vijf telemetrie-items per seconde. Het systeem voegt standaard twee AdaptiveSamplingTelemetryProcessor knooppunten toe: één bevat het Event type steekproef, terwijl de andere het uitsluit. Deze configuratie beperkt telemetrie tot vijf Event typeitems en vijf items van alle andere typen gecombineerd, zodat Events ze afzonderlijk van andere telemetrietypen worden genomen.

Gebruik de voorbeelden in de vorige sectie van deze pagina om dit standaardgedrag te wijzigen.

Kan telemetrie meer dan één keer worden bemonsterd?

  • Nee SamplingTelemetryProcessors negeren items uit overwegingen voor steekproeven als het item al is bemonsterd. Hetzelfde geldt ook voor opnamesampling, die geen steekproeven toepast op die items die al in de SDK zelf zijn bemonsterd.

Waarom neemt u geen eenvoudige 'X procent van elk telemetrietype verzamelen' af?

  • Hoewel deze steekproefbenadering een hoge mate van precisie zou bieden in metrische benaderingen, zou het de mogelijkheid om diagnostische gegevens per gebruiker, sessie en aanvraag te correleren, breken, wat essentieel is voor diagnostische gegevens. Daarom werkt steekproeven beter met beleidsregels zoals 'alle telemetrie-items verzamelen voor X procent van app-gebruikers' of 'verzamel alle telemetriegegevens voor X procent van app-aanvragen'. Voor de telemetrie-items die niet zijn gekoppeld aan de aanvragen (zoals asynchrone achtergrondverwerking), is de terugval om 'X procent van alle items voor elk telemetrietype te verzamelen'.

Kan het steekproefpercentage na verloop van tijd veranderen?

  • Ja, adaptieve steekproeven veranderen geleidelijk het steekproefpercentage, op basis van het momenteel waargenomen volume van de telemetrie.

Als ik vaste steekproeven gebruik, hoe weet ik welk steekproefpercentage het beste werkt voor mijn app?

  • Een manier is om te beginnen met adaptieve steekproeven, te achterhalen op welke snelheid het zich vereffent (zie de bovenstaande vraag) en vervolgens over te schakelen naar steekproeven met vaste frequentie met behulp van die snelheid.

    Anders moet je raden. Analyseer uw huidige telemetriegebruik in Application Insights, bekijk eventuele beperkingen die optreden en schat het volume van de verzamelde telemetrie. Deze drie invoerwaarden, samen met de geselecteerde prijscategorie, stellen voor hoeveel u mogelijk het volume van de verzamelde telemetrie wilt verminderen. Een toename van het aantal gebruikers of een andere verschuiving in het volume van telemetrie kan uw schatting echter ongeldig maken.

Wat gebeurt er als ik het steekproefpercentage zo configureer dat deze te laag is?

  • Overmatige lage steekproefpercentages veroorzaken over-agressieve steekproeven en verminderen de nauwkeurigheid van de benaderingen wanneer Application Insights probeert de visualisatie van de gegevens te compenseren voor het verminderen van het gegevensvolume. Uw diagnostische ervaring kan ook negatief worden beïnvloed, omdat sommige van de onregelmatige mislukte of trage aanvragen kunnen worden uitgemonsterd.

Wat gebeurt er als ik het steekproefpercentage zo configureer dat deze te hoog is?

  • Het configureren van een te hoog steekproefpercentage (niet agressief genoeg) resulteert in een onvoldoende vermindering van het volume van de verzamelde telemetrie. U kunt nog steeds telemetriegegevensverlies ondervinden met betrekking tot beperking en de kosten voor het gebruik van Application Insights zijn mogelijk hoger dan u hebt gepland vanwege overschrijdingskosten.

Wat gebeurt er als ik instellingen voor IncludedTypes en ExcludedTypes configureer?

  • U kunt het beste niet zowel als ExcludedTypes IncludedTypes in uw configuratie instellen om conflicten te voorkomen en ervoor te zorgen dat de instellingen voor telemetrieverzameling worden gewist.
  • Telemetrietypen die worden vermeld, ExcludedTypes worden uitgesloten, zelfs als ze ook in IncludedTypes instellingen zijn ingesteld. ExcludedTypes heeft voorrang op IncludedTypes.

Op welke platforms kan ik steekproeven gebruiken?

  • Opnamesampling kan automatisch plaatsvinden voor telemetrie boven een bepaald volume, als de SDK geen steekproeven uitvoert. Deze configuratie werkt bijvoorbeeld als u een oudere versie van de ASP.NET SDK of Java SDK gebruikt.
  • Als u de huidige ASP.NET of ASP.NET Core SDK's gebruikt (gehost in Azure of op uw eigen server), krijgt u standaard adaptieve steekproeven, maar kunt u overschakelen naar vaste frequentie zoals eerder beschreven. Bij steekproeven met vaste frequentie wordt de browser-SDK automatisch gesynchroniseerd met voorbeeldgebeurtenissen.
  • Als u de huidige Java-agent gebruikt, kunt u configureren applicationinsights.json (voor Java SDK, configureren) om steekproeven met vaste frequentie in te schakelen ApplicationInsights.xml. Steekproeven zijn standaard uitgeschakeld. Met steekproeven met vaste frequentie worden de browser-SDK en de server automatisch gesynchroniseerd met voorbeeldgebeurtenissen.

Er zijn bepaalde zeldzame gebeurtenissen die ik altijd wil zien. Hoe kan ik ze achter de samplingmodule krijgen?

  • De beste manier om altijd bepaalde gebeurtenissen te zien, is door een aangepaste TelemetryInitializer te schrijven, waarmee de SamplingPercentage optie 100 wordt ingesteld op het telemetrie-item dat u wilt behouden, zoals wordt weergegeven in het volgende voorbeeld. Initializers worden gegarandeerd uitgevoerd voordat telemetrieprocessors (inclusief steekproeven) worden uitgevoerd, zodat alle samplingtechnieken dit item negeren vanuit eventuele overwegingen voor steekproeven. Aangepaste telemetrie-initialisatiefuncties zijn beschikbaar in de ASP.NET SDK, de ASP.NET Core SDK, de JavaScript SDK en de Java SDK. U kunt bijvoorbeeld een initialisatiefunctie voor telemetrie configureren met behulp van de ASP.NET SDK:

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if(somecondition)
            {
                ((ISupportSampling)telemetry).SamplingPercentage = 100;
            }
        }
    }
    

Oudere SDK-versies

Adaptieve steekproeven zijn beschikbaar voor de Application Insights SDK voor ASP.NET v2.0.0-beta3 en hoger, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 en hoger, en is standaard ingeschakeld.

Sampling met vaste frequentie is een functie van de SDK in ASP.NET versies van 2.0.0 en Java SDK versie 2.0.1 en hoger.

Vóór v2.5.0-beta2 van de ASP.NET SDK en v2.2.0-beta3 van de ASP.NET Core SDK, vertrouwen steekproeven voor toepassingen die 'gebruiker' definiëren (zoals de meeste webtoepassingen) afhankelijk zijn van de hash van de gebruikers-id. Voor toepassingen die geen gebruikers definiëren (zoals webservices), is de beslissing gebaseerd op de bewerkings-id van de aanvraag. Recente versies van zowel de ASP.NET als ASP.NET Core SDK's gebruiken nu de bewerkings-id voor steekproevenbeslissingen.

Volgende stappen