Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 gebruikt en op zoek bent naar configuratieopties, raadpleegt u sampling inschakelen.
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 steekproefwijzigingen beschikbaar. Deze zijn handig wanneer u verschillende steekproeffrequenties moet toepassen op geselecteerde afhankelijkheden, aanvragen en systeemcontroles. Gebruik sampling-overschrijvingen om enkele storende afhankelijkheden af te stemmen, terwijl bijvoorbeeld alle belangrijke fouten op 100%worden gehandhaafd. 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 samplet, is sampling bij opname 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. Met name, in plaats van alleen records te tellen, moet u
summarize sum(itemCount)
gebruiken. - 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 | Ondersteuning voor bemonsteren met vaste frequentie | Opname van bemonstering ondersteund |
---|---|---|---|
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 | Nee. | Ja | Alleen als er geen andere steekproeven van kracht zijn |
Javascript | Nee. | Ja | Alleen als er geen andere steekproeven van kracht zijn |
Node.JS | Nee. | Ja | Alleen als er geen andere steekproeven van kracht zijn |
Python | Nee. | Ja | Alleen als er geen andere steekproeven van kracht zijn |
Alle anderen | Nee. | Nee. | 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. Voor meer informatie, zie steekproef met limiet.
- 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 laat gegevenspunten vallen ('begrensd') wanneer uw app een hoge telemetriesnelheid verzendt in een kort tijdsinterval. Steekproeven verminderen de kans dat uw toepassing te maken krijgt met limitering.
- Als u binnen het quotum van gegevenspunten voor uw prijscategorie wilt blijven.
- Om het netwerkverkeer te verminderen die ontstaat door de verzameling van 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 nemen niet nodig, omdat deze toepassingen meestal al hun telemetrie kunnen verzenden terwijl ze binnen het quotum blijven, zonder dat er sprake is van gegevensverlies door beperking.
Soorten steekproeven
Er zijn drie verschillende steekproefmethoden:
Met adaptieve steekproeven wordt automatisch het volume van telemetrie aangepast dat vanuit de SDK in uw ASP.NET/ASP.NET Core-app en vanuit Azure Functions wordt verzonden. 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.
Sampling met vaste frequentie vermindert het volume van telemetrie 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. Innamesampling werkt uniform voor alle servers en clients, maar is niet van toepassing wanneer er enige 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.
Hint
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 MaxTelemetryItemsPerSecond
blijft. 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.config
kunt 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 uitApplicationInsights.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.
Verwijder alle
AdaptiveSamplingTelemetryProcessor
knooppunten uit het.config
bestand.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();
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, stel de aiOptions.EnableAdaptiveSampling
eigenschap in op false
wanneer u AddApplicationInsightsTelemetry()
aanroept. 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
Schakel adaptieve steekproeven uit: Verwijder
ApplicationInsights.config
of plaatsAdaptiveSamplingTelemetryProcessor
node in een opmerking.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
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 worden bemonsterd. 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();
Vaste-frequentiesampling configureren voor ASP.NET Core-toepassingen
Adaptieve steekproeven uitschakelen
Wijzigingen kunnen worden aangebracht na de
WebApplication.CreateBuilder()
methode, met behulp vanApplicationInsightsServiceOptions
:var builder = WebApplication.CreateBuilder(args); var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions(); aiOptions.EnableAdaptiveSampling = false; builder.Services.AddApplicationInsightsTelemetry(aiOptions); var app = builder.Build();
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, sampling-overrides en steekproeven met een vast tarief ondersteund. Adaptieve steekproeven worden niet ondersteund in Java.
Java autoinstrumentation configureren
- Als u steekproeven wilt configureren die de standaardsamplingfrequentie overschrijven en verschillende steekproeffrequenties toepassen op geselecteerde aanvragen en afhankelijkheden, gebruikt u de handleiding voor het overschrijven van steekproeven.
- Gebruik de gids voor vaste frequentiesampling die van toepassing is op al uw telemetriegegevens.
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
opgeven als onderdeel van uw Tracer
configuratie. 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.
Hint
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>
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 punt waarop de telemetrie van uw webserver, browsers en apparaten het Application Insights-service-eindpunt bereikt. Hoewel het de hoeveelheid telemetrieverkeer die vanuit uw app wordt verzonden niet vermindert, verlaagt het wel de hoeveelheid die door Application Insights wordt verwerkt, bewaard en waarvoor kosten in rekening worden gebracht.
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:
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.
Opnamebemonstering werkt niet samen met adaptieve of vaste-snelheidsbemonstering. 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 gegevensinvoersampling 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 of steekproeven in werking 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 neemt geen steekproeven van sessiegegevens, metrische gegevens (inclusief aangepaste metrische gegevens) of prestatiecounter telemetrietypen 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 daarvan is noch nuttig qua middelen noch kosteneffectief. 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, neemt de nauwkeurigheid van logboekqueries af en worden ze vertekend. 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 Application 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 statistieken kunnen bijvoorbeeld rapporteren dat deze webapp 25 aanvragen heeft verwerkt aan het MDM-account, met een itemCount
waarde van 100 in de telemetrierecord voor verzonden 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 ervoor zorgen dat waarschuwingen niet optreden 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 neemt hetEvent
type op in de steekproef, terwijl de andere sluit het uit. Deze configuratie beperkt telemetrie tot vijfEvent
typeitems en vijf items van alle andere typen gecombineerd, waardoorEvents
afzonderlijk van andere telemetrietypen worden gemonitord.
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 intake-sampling, dat geen steekproeven toepast op items die al in de SDK zelf zijn bemonsterd.
Waarom is het niet gewoon "verzamel X procent van elk type telemetrie"?
- 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 beïnvloed worden, omdat sommige van de niet-frequent falende of trage aanvragen kunnen worden uitgefilterd.
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 ervaren door beperkingen, en de kosten voor het gebruik van Application Insights kunnen hoger zijn dan u had gepland door extra kosten.
Wat gebeurt er als ik instellingen voor IncludedTypes en ExcludedTypes configureer?
- Het is het beste om zowel
ExcludedTypes
alsIncludedTypes
niet in uw configuratie in te stellen om conflicten te voorkomen en duidelijkheid in de telemetrie-instellingen te waarborgen. - Telemetrietypen die in
ExcludedTypes
worden vermeld, worden uitgesloten, zelfs als ze ook inIncludedTypes
instellingen zijn ingesteld. ExcludedTypes heeft voorrang op IncludedTypes.
Op welke platforms kan ik steekproeven gebruiken?
- Opnamesampling kan automatisch plaatsvinden voor telemetrie die een bepaald volume overschrijdt, indien 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
applicationinsights.json
configureren (voor de Java SDK configureert uApplicationInsights.xml
) om steekproeven met een vaste frequentie in te schakelen. 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 voorbij 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, hingen steekproeven voor toepassingen die "gebruiker" definiëren (zoals de meeste webtoepassingen) af 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
- Filteren kan een striktere controle bieden over wat uw SDK verzendt.
- Lees het artikel Developer Network
Optimize Telemetry with Application Insights.< (Telemetrie optimaliseren met Application Insights ).