Vzorkování ve službě Application Insights

Vzorkování je funkce v Aplikace Azure Přehledy. Doporučuje se snížit provoz telemetrie, náklady na data a náklady na úložiště a zachovat statisticky správnou analýzu dat aplikací. Vzorkování také pomáhá vyhnout se omezování telemetrie Přehledy aplikací. Filtr vzorkování vybere položky, které souvisejí, abyste mohli procházet mezi položkami při provádění diagnostických šetření.

Při zobrazení počtu metrik na portálu se přenormalizují, aby se zohlednilo vzorkování. Tím minimalizujete jakýkoli vliv na statistiku.

Stručný souhrn

  • Existují tři různé typy vzorkování: adaptivní vzorkování, vzorkování s pevnou rychlostí a vzorkování příjmu dat.
  • Adaptivní vzorkování je ve výchozím nastavení povolené ve všech nejnovějších verzích aplikačních Přehledy ASP.NET a ASP.NET Core sadÁCH SDK (Software Development Kit). Používá se také Azure Functions.
  • Vzorkování s pevnou rychlostí je k dispozici v posledních verzích sad SDK aplikace Přehledy pro ASP.NET, ASP.NET Core, Javu (agenta i sadu SDK) a Python.
  • V Javě jsou k dispozici přepsání vzorkování a jsou užitečné, když potřebujete použít různé vzorkovací frekvence u vybraných závislostí, požadavků, kontrol stavu. Pomocí přepsání vzorkování můžete vyladit některé hlučné závislosti, zatímco například všechny důležité chyby se uchovávají na 100 %. Toto je forma pevného vzorkování, která poskytuje jemně odstupňovanou úroveň kontroly nad telemetrií.
  • Vzorkování příjmu dat funguje na koncovém bodu služby Přehledy aplikace. Platí pouze v případě, že se neprojeví žádné jiné vzorkování. Pokud sada SDK ukázkuje vaši telemetrii, vzorkování příjmu dat je zakázané.
  • Pokud u webových aplikací protokolujete vlastní události a potřebujete zajistit, aby se sada událostí zachovala nebo zahodila společně, musí mít události stejnou OperationId hodnotu.
  • Pokud píšete analytické dotazy, měli byste vzít v úvahu vzorkování. Konkrétně byste místo pouhého počítání záznamů měli použít summarize sum(itemCount).
  • Některé typy telemetrie, včetně metrik výkonu a vlastních metrik, se vždy uchovávají bez ohledu na to, jestli je vzorkování povolené nebo ne.

Následující tabulka shrnuje typy vzorkování dostupné pro každou sadu SDK a typ aplikace:

Application Přehledy SDK Podpora adaptivního vzorkování Podporované vzorkování s pevnou rychlostí Podporované vzorkování příjmu dat
ASP.NET Ano (ve výchozím nastavení zapnuto) Ano Pouze v případě, že se neprojeví žádné jiné vzorkování
ASP.NET Core Ano (ve výchozím nastavení zapnuto) Ano Pouze v případě, že se neprojeví žádné jiné vzorkování
Azure Functions Ano (ve výchozím nastavení zapnuto) No Pouze v případě, že se neprojeví žádné jiné vzorkování
Java No Ano Pouze v případě, že se neprojeví žádné jiné vzorkování
Node.JS No Ano Pouze v případě, že se neprojeví žádné jiné vzorkování
Python No Ano Pouze v případě, že se neprojeví žádné jiné vzorkování
Všichni ostatní No No Ano

Poznámka

Informace na většině této stránky platí pro aktuální verze sad SDK aplikace Přehledy. Informace o starších verzích sad SDK najdete v následující části.

Typy vzorkování

Existují tři různé metody vzorkování:

  • Adaptivní vzorkování automaticky upraví objem telemetrie odesílaný ze sady SDK ve vaší aplikaci ASP.NET/ASP.NET Core a z Azure Functions. Toto je výchozí vzorkování při použití sady ASP.NET nebo ASP.NET Core SDK. Adaptivní vzorkování je aktuálně dostupné jenom pro telemetrii na straně serveru ASP.NET a pro Azure Functions.

  • Vzorkování s pevnou rychlostí snižuje objem telemetrie odesílaných z vašeho ASP.NET nebo ASP.NET Core nebo serveru Java a z prohlížečů uživatelů. Nastavíte sazbu. Klient a server budou synchronizovat vzorkování tak, aby v nástroji Search bylo možné přecházet mezi souvisejícími zobrazeními stránek a požadavky.

  • Vzorkování příjmu dat probíhá v koncovém bodu služby Přehledy aplikace. Zahodí určitou telemetrii, která dorazí z vaší aplikace, a to vzorkovací rychlostí, kterou jste nastavili. Nezmenšuje přenosy telemetrických dat odesílaných z vaší aplikace, ale pomáhají udržet se v rámci měsíční kvóty. Hlavní výhodou vzorkování je, že můžete nastavit vzorkovací frekvenci bez opětovného nasazení aplikace. Vzorkování příjmu dat funguje jednotně pro všechny servery a klienty, ale nevztahuje se, pokud jsou v provozu žádné jiné typy vzorkování.

Důležité

Pokud jsou pro typ telemetrie povoleny adaptivní nebo pevné metody vzorkování rychlosti, vzorkování příjmu dat je pro danou telemetrii zakázané. Typy telemetrie, které jsou vyloučené z vzorkování na úrovni sady SDK, ale budou stále podléhat vzorkování příjmu dat podle rychlosti nastavené na portálu.

Adaptivní vzorkování

Adaptivní vzorkování ovlivňuje objem telemetrie odesílané z vaší webové aplikace do koncového bodu služby Přehledy aplikace.

Tip

Adaptivní vzorkování je ve výchozím nastavení povolené, když používáte sadu ASP.NET SDK nebo sadu ASP.NET Core SDK a ve výchozím nastavení je pro Azure Functions povolená.

Svazek se automaticky upraví tak, aby se zachoval v zadané maximální rychlosti provozu a řídí se nastavením MaxTelemetryItemsPerSecond. Pokud aplikace vytváří nízkou telemetrii, například při ladění nebo kvůli nízkému využití, nebudou položky procesorem vzorkování vyřazeny, dokud je svazek nižší MaxTelemetryItemsPerSecond. S rostoucím objemem telemetrie se rychlost vzorkování upraví tak, aby dosáhla cílového svazku. Úprava se přepočítává v pravidelných intervalech a je založená na klouzavém průměru odchozí přenosové rychlosti.

Pro dosažení cílového svazku se některá vygenerovaná telemetrie zahodí. Stejně jako u jiných typů vzorkování si algoritmus uchovává související položky telemetrie. Když například kontrolujete telemetrii ve službě Search, budete moct najít požadavek související s určitou výjimkou.

Počty metrik, jako je rychlost požadavků a rychlost výjimek, se upraví tak, aby se v Průzkumníku metrik zobrazovaly přibližně správné hodnoty.

Konfigurace adaptivního vzorkování pro ASP.NET aplikace

Poznámka

Tato část se týká ASP.NET aplikací, nikoli aplikací ASP.NET Core. Přečtěte si o konfiguraci adaptivního vzorkování pro aplikace ASP.NET Core dále v tomto dokumentu.

V ApplicationInsights.configuzlu můžete upravit několik parametrů AdaptiveSamplingTelemetryProcessor . Zobrazené obrázky jsou výchozí hodnoty:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Cílová rychlost logických operací , které má adaptivní algoritmus shromažďovat na každém hostiteli serveru. Pokud vaše webová aplikace běží na mnoha hostitelích, snižte tuto hodnotu tak, aby zůstala v cílové míře provozu na portálu Přehledy aplikace.

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

    Interval, ve kterém je aktuální rychlost telemetrie znovu zhodnocená. Vyhodnocení se provádí jako klouzavý průměr. Tento interval můžete zkrátit, pokud se vaše telemetrie může vyžadovat náhlé nárůsty.

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

    Když se změní procentuální hodnota vzorkování, jak brzy poté můžeme snížit procento vzorkování, aby se zachytála méně dat?

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

    Když se změní procentuální hodnota vzorkování, jak brzy poté můžeme znovu zvýšit procento vzorkování, abychom mohli zachytit další data?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Jak se procento vzorkování liší, jaká je minimální hodnota, kterou můžeme nastavit?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Jak se procento vzorkování liší, jaká je maximální hodnota, kterou můžeme nastavit?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    Při výpočtu klouzavého průměru to určuje váhu, která by měla být přiřazena k nejnovější hodnotě. Použijte hodnotu rovnou nebo menší než 1. Menší hodnoty zmenšují algoritmus na náhlé změny.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    Množství telemetrie, která se má vzorek, když aplikace právě začala. Tuto hodnotu během ladění nezmenšujte.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    Středník oddělený seznam typů, které nechcete podléhat vzorkování. Rozpoznané typy jsou: Dependency, , EventPageViewExceptionRequest, , , . Trace Veškerá telemetrie zadaných typů se přenáší; budou vzorkovány typy, které nejsou zadány.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Středník oddělený seznam typů, které chcete podléhat vzorkování. Rozpoznané typy jsou: Dependency, , EventPageViewExceptionRequest, , , . Trace Zadané typy budou vzorkovány; všechny telemetrie ostatních typů budou vždy přenášeny.

Pokud chcete vypnout adaptivní vzorkování, odeberte AdaptiveSamplingTelemetryProcessor uzly z ApplicationInsights.config.

Alternativa: Konfigurace adaptivního vzorkování v kódu

Místo nastavení parametru vzorkování v .config souboru můžete tyto hodnoty nastavit prostřednictvím kódu programu.

  1. Odeberte všechny AdaptiveSamplingTelemetryProcessor uzly ze .config souboru.

  2. Ke konfiguraci adaptivního vzorkování použijte následující fragment kódu:

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

    (Přečtěte si o procesorech telemetrie.)

Můžete také upravit vzorkovací frekvenci pro každý typ telemetrie jednotlivě nebo dokonce vyloučit určité typy z vzorkování vůbec:

// 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");

Konfigurace adaptivního vzorkování pro ASP.NET Core aplikace

Aplikace ASP.NET Core nejsou k dispoziciApplicationInsights.config, takže veškerá konfigurace se provádí prostřednictvím kódu. Adaptivní vzorkování je ve výchozím nastavení povolené pro všechny aplikace ASP.NET Core. Chování vzorkování můžete zakázat nebo přizpůsobit.

Vypnutí adaptivního vzorkování

Výchozí funkci vzorkování je možné zakázat při přidávání služby Application Přehledy v metodě ConfigureServicespomocí ApplicationInsightsServiceOptions souboruStartup.cs:

public void ConfigureServices(IServiceCollection services)
{
    // ...

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

    //...
}

Výše uvedený kód zakáže adaptivní vzorkování. Pokud chcete přidat vzorkování s dalšími možnostmi přizpůsobení, postupujte podle následujících kroků.

Konfigurace nastavení vzorkování

Pomocí metod TelemetryProcessorChainBuilder rozšíření, jak je znázorněno níže, můžete přizpůsobit chování vzorkování.

Důležité

Pokud tuto metodu používáte ke konfiguraci vzorkování, nezapomeňte vlastnost nastavit aiOptions.EnableAdaptiveSampling na false při volání AddApplicationInsightsTelemetry(). Po provedení této změny pak musíte postupovat podle pokynů v následujícím bloku kódu , abyste mohli znovu povolit adaptivní vzorkování pomocí vlastních nastavení. Pokud to neuděláte, může to vést k nadměrnému příjmu dat. Vždy otestujte po změně nastavení vzorkování a nastavte odpovídající denní limit dat , který vám pomůže řídit náklady.

using Microsoft.ApplicationInsights.Extensibility

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
    var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    // For older versions of the Application Insights SDK, use the following line instead:
    // var builder = configuration.TelemetryProcessorChainBuilder;

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

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

    // If you have other telemetry processors:
    builder.Use((next) => new AnotherProcessor(next));
    
    builder.Build();

    // ...
}

Konfigurace adaptivního vzorkování pro Azure Functions

Podle pokynů na této stránce nakonfigurujte adaptivní vzorkování pro aplikace spuštěné v Azure Functions.

Vzorkování s pevnou rychlostí

Vzorkování s pevnou rychlostí snižuje provoz odesílaný z webového serveru a webových prohlížečů. Na rozdíl od adaptivního vzorkování snižuje telemetrii s pevnou rychlostí, kterou jste rozhodli. Vzorkování s pevnou rychlostí je k dispozici pro aplikace ASP.NET, ASP.NET Core, Java a Python.

Podobně jako u jiných technik vzorkování se zachová také související položky. Synchronizuje také vzorkování klienta a serveru, aby se zachovaly související položky – například když se podíváte na zobrazení stránky ve službě Search, můžete najít související požadavky na server.

V Průzkumníku metrik se sazby, jako jsou počty požadavků a výjimek, vynásobí faktorem, který nahradí vzorkovací frekvenci, aby byly přibližně správné.

Konfigurace vzorkování s pevnou rychlostí pro ASP.NET aplikace

  1. Zakažte adaptivní vzorkování: Odeberte ApplicationInsights.confignebo zakomentujte AdaptiveSamplingTelemetryProcessor uzel.

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Povolte modul vzorkování s pevnou rychlostí. Přidejte tento fragment kódu do ApplicationInsights.config:

    <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>10</SamplingPercentage>
        </Add>
    </TelemetryProcessors>
    

    Alternativně můžete místo nastavení parametru vzorkování v ApplicationInsights.config souboru nastavit tyto hodnoty prostřednictvím kódu programu:

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

    (Přečtěte si o procesorech telemetrie.)

Konfigurace vzorkování s pevnou rychlostí pro ASP.NET Core aplikace

  1. Zakázat adaptivní vzorkování: Změny lze v ConfigureServices metodě provést pomocí ApplicationInsightsServiceOptions:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. Povolte modul vzorkování s pevnou rychlostí. Změny lze provést v Configure metodě, jak je znázorněno v následujícím fragmentu kódu:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var configuration = app.ApplicationServices.GetService<TelemetryConfiguration>();
    
        var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
        // For older versions of the Application Insights SDK, use the following line instead:
        // var builder = configuration.TelemetryProcessorChainBuilder;
    
        // Using fixed rate sampling
        double fixedSamplingPercentage = 10;
        builder.UseSampling(fixedSamplingPercentage);
    
        builder.Build();
    
        // ...
    }
    

Konfigurace přepsání vzorkování a vzorkování s pevnou rychlostí pro aplikace v Javě

Ve výchozím nastavení není v automatické instrumentaci a sadě SDK v Javě povolená žádná vzorkování. V současné době se podporuje automatické instrumentace v Javě, přepsání vzorkování a vzorkování s pevnou rychlostí. Adaptivní vzorkování není v Javě podporováno.

Konfigurace automatické instrumentace v Javě

  • Pokud chcete nakonfigurovat přepsání vzorkování, které přepíší výchozí vzorkovací frekvenci a používají různé vzorkovací frekvence u vybraných požadavků a závislostí, použijte průvodce přepsání vzorkováním.
  • Pokud chcete nakonfigurovat vzorkování s pevnou rychlostí, které platí pro všechny vaše telemetrie, použijte průvodce vzorkováním s pevnou rychlostí.

Konfigurace sady Java 2.x SDK

  1. Stáhněte a nakonfigurujte webovou aplikaci pomocí nejnovější sady Application Přehledy Java SDK.

  2. Povolte modul vzorkování s pevnou rychlostí přidáním následujícího fragmentu kódu do ApplicationInsights.xml souboru:

    <TelemetryProcessors>
        <BuiltInProcessors>
            <Processor type="FixedRateSamplingTelemetryProcessor">
                <!-- 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) -->
                <Add name="SamplingPercentage" value="50" />
            </Processor>
        </BuiltInProcessors>
    </TelemetryProcessors>
    
  3. Můžete zahrnout nebo vyloučit konkrétní typy telemetrie z vzorkování pomocí následujících značek uvnitř Processor značky FixedRateSamplingTelemetryProcessor:

    <ExcludedTypes>
        <ExcludedType>Request</ExcludedType>
    </ExcludedTypes>
    
    <IncludedTypes>
        <IncludedType>Exception</IncludedType>
    </IncludedTypes>
    

Typy telemetrie, které lze zahrnout nebo vyloučit ze vzorkování, jsou: , , , , a TraceRequest. PageViewExceptionEventDependency

Poznámka

Pro procento vzorkování zvolte procento, které je blízko 100/N, kde N je celé číslo. V současné době vzorkování nepodporuje jiné hodnoty.

Konfigurace vzorkování s pevnou rychlostí pro aplikace OpenCensus Python

Instrumentace aplikace pomocí nejnovějších exportérů Azure Monitoru OpenCensus

Poznámka

Vzorkování s pevnou rychlostí není pro vývozce metrik k dispozici. To znamená, že vlastní metriky jsou jedinými typy telemetrie, kde se vzorkování nedá nakonfigurovat. Exportér metrik odešle veškerou telemetrii, kterou sleduje.

Vzorkování s pevnou rychlostí pro trasování

V rámci konfigurace Tracer můžete zadat vzorkovník sampler. Pokud není k dispozici žádný explicitní sampler, ProbabilitySampler použije se ve výchozím nastavení. Ve ProbabilitySampler výchozím nastavení by se použila sazba 1/10000, což znamená, že jedna z každých 10000 žádostí se odešle do aplikace Přehledy. Informace o zadání vzorkovací frekvence najdete níže.

Pokud chcete určit vzorkovací frekvenci, ujistěte se, že určuje Tracer vzorkovač s vzorkovací rychlostí mezi 0,0 a 1,0 včetně. Vzorkovací frekvence 1,0 představuje 100 %, což znamená, že všechny vaše požadavky budou odeslány jako telemetrie do aplikace Přehledy.

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

Vzorkování s pevnou rychlostí pro protokoly

Vzorkování AzureLogHandler s pevnou rychlostí můžete nakonfigurovat úpravou volitelného argumentu logging_sampling_rate . Pokud není zadán žádný argument, použije se vzorkovací frekvence 1,0. Vzorkovací frekvence 1,0 představuje 100 %, což znamená, že všechny vaše požadavky budou odeslány jako telemetrie do aplikace Přehledy.

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

Konfigurace vzorkování s pevnou rychlostí pro webové stránky pomocí JavaScriptu

Webové stránky založené na JavaScriptu je možné nakonfigurovat tak, aby používaly Přehledy aplikace. Telemetrie se odesílá z klientské aplikace spuštěné v prohlížeči uživatele a stránky je možné hostovat z libovolného serveru.

Při konfiguraci webových stránek založených na JavaScriptu pro Přehledy aplikace upravte fragment kódu JavaScriptu, který získáte z portálu Přehledy aplikace.

Tip

V ASP.NET aplikacích s zahrnutým JavaScriptem se fragment kódu obvykle prochází _Layout.cshtml.

Vložte řádek jako samplingPercentage: 10, před instrumentační klíč:

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

Poznámka

31. března 2025 skončí podpora příjmu instrumentačních klíčů. Příjem dat založený na instrumentačním klíči bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu této funkce. Přechod na připojovací řetězce , abyste mohli využívat nové funkce.

Pro procento vzorkování zvolte procento, které je blízko 100/N, kde N je celé číslo. V současné době vzorkování nepodporuje jiné hodnoty.

Koordinace vzorkování na straně serveru a na straně klienta

Sada JavaScript SDK na straně klienta se účastní vzorkování s pevnou rychlostí ve spojení se sadou SDK na straně serveru. Instrumentované stránky budou odesílat telemetrii na straně klienta pouze od stejného uživatele, pro kterého se sada SDK na straně serveru rozhodla zahrnout do vzorkování. Tato logika je navržená tak, aby zachovala integritu uživatelských relací napříč klientskými a serverovými aplikacemi. V důsledku toho můžete z libovolné konkrétní položky telemetrie v aplikaci Přehledy můžete najít všechny ostatní položky telemetrie pro tohoto uživatele nebo relaci a v hledání a procházet mezi souvisejícími zobrazeními stránek a požadavky.

Pokud telemetrie na straně klienta a serveru nezobrazují koordinované ukázky:

  • Ověřte, že jste povolili vzorkování na serveru i klientovi.
  • Zkontrolujte, že jste nastavili stejné procento vzorkování na klientovi i na serveru.
  • Ujistěte se, že je verze sady SDK 2.0 nebo vyšší.

Vzorkování příjmu dat

Vzorkování příjmu dat funguje v okamžiku, kdy telemetrie z webového serveru, prohlížečů a zařízení dosáhne koncového bodu služby Přehledy aplikace. I když nezmenšuje přenos telemetrie odesílaný z vaší aplikace, snižuje množství zpracovávané a zachované (a účtované) aplikací Přehledy.

Tento typ vzorkování použijte, pokud vaše aplikace často překročí měsíční kvótu a nemáte možnost použít některý z typů vzorkování založených na sadě SDK.

Nastavte vzorkovací frekvenci na stránce Využití a odhadované náklady:

From the application's Overview blade, click Settings, Quota, Samples, then select a sampling rate, and click Update.

Stejně jako jiné typy vzorkování si algoritmus uchovává související položky telemetrie. Když například kontrolujete telemetrii ve službě Search, budete moct najít požadavek související s určitou výjimkou. Počty metrik, jako je rychlost požadavků a rychlost výjimek, se správně zachovají.

Datové body, které jsou zahozeny vzorkováním, nejsou k dispozici v žádné funkci Přehledy aplikace, jako je průběžný export.

Vzorkování příjmu dat nefunguje, zatímco je v provozu adaptivní vzorkování nebo vzorkování s pevnou rychlostí. Adaptivní vzorkování je ve výchozím nastavení povolené, když se používá sada ASP.NET SDK nebo sada ASP.NET CORE SDK nebo když je Přehledy aplikace povolená v Azure App Service nebo pomocí monitorování stavu. Když koncový bod služby Přehledy aplikace přijímá telemetrická data, zkontroluje telemetrii a jestli je vzorkovací frekvence hlášená jako menší než 100 % (což značí, že se vzorkuje telemetrie), pak se míra vzorkování příjmu dat, kterou nastavíte, ignoruje.

Upozornění

Hodnota zobrazená na dlaždici portálu označuje hodnotu, kterou jste nastavili pro vzorkování příjmu dat. Nepředstavuje skutečnou vzorkovací frekvenci, pokud je v provozu nějaká vzorkování sady SDK (adaptivní nebo vzorkování s pevnou rychlostí).

Kdy použít vzorkování

Obecně platí, že u většiny aplikací s malou a střední velikostí nepotřebujete vzorkování. Nejužitečnější diagnostické informace a nejpřesnější statistiky se získávají shromažďováním dat o všech aktivitách uživatelů.

Hlavní výhody vzorkování jsou:

  • Když vaše aplikace v krátkém časovém intervalu odesílá velmi vysokou míru telemetrie, dojde k poklesu datových bodů služby Přehledy ("omezení"). Vzorkování snižuje pravděpodobnost, že dojde k omezování vaší aplikace.
  • Pokud chcete zachovat kvótu datových bodů pro cenovou úroveň.
  • Pokud chcete snížit síťový provoz z kolekce telemetrie.

Jaký typ vzorkování mám použít?

Vzorkování příjmu dat použijte v následujících případech:

  • Často používáte měsíční kvótu telemetrie.
  • Získáváte příliš mnoho telemetrických dat z webových prohlížečů uživatelů.
  • Používáte verzi sady SDK, která nepodporuje vzorkování – například verze ASP.NET starší než 2.

Vzorkování s pevnou rychlostí použijte v následujících případech:

  • Chcete synchronizovat vzorkování mezi klientem a serverem, abyste při zkoumání událostí ve službě Search mohli přecházet mezi souvisejícími událostmi na klientovi a serveru, jako jsou zobrazení stránek a požadavky HTTP.
  • Máte jistotu, že je pro vaši aplikaci vhodné procento vzorkování. Měla by být dostatečně vysoká, abyste získali přesné metriky, ale pod mírou, která překračuje vaši cenovou kvótu a limity omezování.

Použití adaptivního vzorkování:

Pokud podmínky pro použití jiných forem vzorkování neplatí, doporučujeme adaptivní vzorkování. Toto nastavení je ve výchozím nastavení povolené v sadě ASP.NET/ASP.NET Core SDK. Provoz se nezmenší, dokud nedosáhne určité minimální míry, a proto se weby s nízkým využitím pravděpodobně vůbec nebudou vzorkovat.

Určení, jestli probíhá vzorkování

Pokud chcete zjistit skutečnou vzorkovací frekvenci bez ohledu na to, kde byla použita, použijte například analytický dotaz :

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

Pokud zjistíte, že RetainedPercentage u libovolného typu je méně než 100, je tento typ telemetrie vzorkován.

Důležité

Aplikační Přehledy neprovádí ukázkovou relaci, metriky (včetně vlastních metrik) ani typy telemetrie čítačů výkonu v některé z technik vzorkování. Tyto typy jsou vždy vyloučeny z vzorkování, protože snížení přesnosti může být pro tyto typy telemetrie vysoce nežádoucí.

Jak funguje vzorkování

Algoritmus vzorkování rozhoduje, které položky telemetrie se mají vynechat a které položky se mají zachovat. To platí bez ohledu na to, jestli se vzorkování provádí sadou SDK nebo ve službě Přehledy aplikace. Rozhodnutí o vzorkování vychází z několika pravidel, která se zaměřují na zachování všech vzájemně propojených datových bodů beze změny a zachování diagnostického prostředí v aplikaci Přehledy, která je použitelná a spolehlivá i s omezenou sadou dat. Pokud například vaše aplikace obsahuje neúspěšný požadavek zahrnutý v ukázce, budou zachovány další položky telemetrie (například výjimky a trasování zaprotokolované pro tento požadavek). Vzorkování buď uchovává, nebo je shodí dohromady. V důsledku toho, když se podíváte na podrobnosti žádosti v aplikaci Přehledy, můžete vždy zobrazit požadavek spolu s přidruženými položkami telemetrie.

Rozhodnutí o vzorkování vychází z ID operace požadavku, což znamená, že všechny položky telemetrie, které patří do konkrétní operace, se zachovají nebo zahodí. U položek telemetrie, které nemají sadu ID operace (například položky telemetrie hlášené z asynchronních vláken bez kontextu HTTP), vzorkování jednoduše zaznamenává procento položek telemetrie každého typu.

Při prezentování telemetrie zpět na vás služba Application Přehledy upraví metriky stejným procentem vzorkování, které se použilo v době shromažďování, aby vykompenzovala chybějící datové body. Proto při prohlížení telemetrie v aplikaci Přehledy se uživatelům zobrazují statisticky správné aproximace, které jsou velmi blízko skutečných čísel.

Přesnost aproximace z velké části závisí na nakonfigurovaných procentech vzorkování. Také se zvyšuje přesnost aplikací, které zpracovávají velký objem obecně podobných požadavků od mnoha uživatelů. Na druhou stranu u aplikací, které nefungují s významným zatížením, není vzorkování potřeba, protože tyto aplikace můžou obvykle posílat veškerou telemetrii při zachování kvóty, aniž by to způsobilo ztrátu dat z omezování.

Přesnost dotazů protokolu a vysoká míra vzorkování

Při vertikálním navýšení kapacity aplikace může zpracovávat desítky, stovky nebo tisíce pracovních položek za sekundu. Protokolování události pro každou z nich není zdroj ani nákladově efektivní. Aplikační Přehledy využívá vzorkování k přizpůsobení rostoucímu objemu telemetrie flexibilním způsobem a k řízení využití a nákladů prostředků.

Vzorkování však může ovlivnit přesnost výsledků dotazu získaných z ukázkové telemetrie. Například 25 různých uživatelů provedlo jeden požadavek na webovou aplikaci a každý z těchto požadavků vygeneroval 1 záznam telemetrie požadavku, 1 záznam telemetrie závislostí, 1 záznam telemetrie trasování zprávy a 1 záznam telemetrie výjimky. To sečte celkem 100 nezpracovaných telemetrických záznamů zobrazených na obrázku níže.

Sample rate at 0 percent and the itemCount is 1Vzorkovací frekvence 0 % 25 Požadavků (itemCount=1) 25 Závislostí (itemCount=1) 25 Trasování (itemCount=1) 25 Výjimek (itemCount=1)

Pokud sada Application Přehledy SDK nemusela omezovat telemetrii, aplikace odešle všech 100 záznamů do koncového bodu příjmu dat. To je ekvivalent vzorkovací frekvence 0 %. Sada SDK zabalí všechny záznamy telemetrie do datových částí JSON a odešle je do služby příjmu dat. Každý z těchto 100 záznamů telemetrie by měl itemCount pole nastavené na 1, to znamená, že nepotřebujeme vypustit žádné záznamy pro vzorkování a každý jeden záznam telemetrie představuje počet 1. Spuštění dotazu sum(itemCount) na telemetrii požadavků vrátí 25, což odpovídá 25 požadavkům a je 25 % z 100 telemetrických záznamů vytvořených webovou aplikací.

Když sada SDK omezí telemetrii vzorkováním, itemCount bude méně reprezentativní množství uložených záznamů telemetrie. Pokud se například rozhodlo zachovat 1 % všech záznamů a vzorkovací frekvence byla 99 % pro 100 telemetrických záznamů v předchozím příkladu. To by znamenalo, že se uloží jenom jeden záznam ze všech položek. Pokud sada SDK vybere jeden ze záznamů telemetrie požadavků, bude muset všechny ostatní záznamy 99 (24 požadavků, 25 závislostí, 25 trasování, 25 výjimek). I když je uložený pouze 1 záznam, sada SDK nastaví itemCount pole požadavku na 100. Důvodem je to, že jeden ingestovaný záznam představuje 100 celkových telemetrických záznamů, které se spustily ve webové aplikaci.

Sample rate at 99 percent and the itemCount is 100 visualizedSample rate at 99 percent and the itemCount is 100 in percentagesVzorkovací frekvence 99 % 1 Požadavek (itemCount=100) 0 Závislosti 0 Trasování 0 Výjimek

Jedním z upozornění v tomto příkladu je to, že aplikace Přehledy ukázky sady SDK na základě ID operace, což znamená, že operation_Id je vybrána a všechna telemetrie pro danou jednu operaci se ingestují a ukládají (ne náhodné jednotlivé záznamy). To může také vést k výkyvům na základě počtu telemetrických dat operací aplikace. Pokud má jedna operace vyšší množství záznamů a tato operace se vzorkuje, zobrazí se jako špička v upravených vzorkovacích sazbách. Pokud jedna operace například vytvoří 4000 telemetrických záznamů a ostatní operace vytvoří pouze 1 až 3 telemetrické záznamy. Vzorkování založené na operation_Id tom je provedeno, aby se umožnilo kompletní zobrazení pro neúspěšné operace. Veškerá telemetrie operace je možné zkontrolovat, včetně podrobností o výjimce, aby bylo možné přesně diagnostikovat chyby kódu aplikace.

Upozornění

Integrita kompletního zobrazení distribuované operace může mít vliv na to, pokud je v distribuované operaci zapnutá vzorkování nějaká aplikace. Různá rozhodnutí o vzorkování provádí každá aplikace v distribuované operaci, takže telemetrie pro jedno ID operace může být uložena jednou aplikací, zatímco jiné aplikace se mohou rozhodnout, že nebudou vzorkovat telemetrii pro stejné ID operace.

Vzhledem k tomu, že míra vzorkování zvyšuje přesnost dotazů založených na protokolech a obvykle se nafoukne. To má vliv pouze na přesnost dotazů založených na protokolech při povolení vzorkování a vzorkovací frekvence jsou v vyšším rozsahu (přibližně 60 %). Dopad se liší podle typů telemetrie, počtu telemetrických dat na operaci a dalších faktorů.

K řešení problémů zavedených vzorkováním předem agregovaných metrik se používají v sadách SDK. Další podrobnosti o těchto metrikách, agregovaných protokolech a předběžné agregaci najdete v Aplikace Azure Přehledy – Azure Monitor | Microsoft Docs. Před výskytem vzorkování se identifikují relevantní vlastnosti protokolovaných dat a extrahují se statistiky. Aby se zabránilo problémům s prostředky a náklady, metriky se agregují. Výsledná agregovaná data jsou reprezentována pouze několika položkami telemetrie metrik za minutu místo potenciálně tisíců položek telemetrie událostí. Tyto metriky vypočítají 25 požadavků z příkladu a odesílají metriku do účtu MDM, který hlásí", že tato webová aplikace zpracovala 25 požadavků, ale záznam telemetrie odeslaných požadavků bude mít itemCount 100. Tyto předem agregované metriky hlásí správná čísla a můžou se spoléhat na to, kdy vzorkování ovlivňuje výsledky dotazů založených na protokolu. Můžete je zobrazit v okně Metriky na portálu Přehledy aplikace.

Nejčastější dotazy

Jaké je výchozí chování vzorkování v sadách SDK ASP.NET a ASP.NET Core?

  • Pokud používáte jednu z nejnovějších verzí výše uvedené sady SDK, je adaptivní vzorkování ve výchozím nastavení povolené s pěti položkami telemetrie za sekundu. Ve výchozím nastavení jsou přidány dva AdaptiveSamplingTelemetryProcessor uzly a jeden obsahuje Event typ vzorkování, zatímco druhý typ vylučuje Event z vzorkování. Tato konfigurace znamená, že se sada SDK pokusí omezit položky telemetrie na pět položek telemetrie Event typů a pět položek telemetrie všech ostatních typů zkombinovaných a zajistit Events tak vzorkování odděleně od jiných typů telemetrie. Události se obvykle používají pro obchodní telemetrii a s největší pravděpodobností by neměly být ovlivněny svazky diagnostických telemetrických dat.

    Následující příklad ukazuje výchozí ApplicationInsights.config vygenerovaný soubor. Ve ASP.NET Core je v kódu povolené stejné výchozí chování. Pomocí příkladů v předchozí části této stránky můžete toto výchozí chování změnit.

    <TelemetryProcessors>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
            <ExcludedTypes>Event</ExcludedTypes>
        </Add>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
            <IncludedTypes>Event</IncludedTypes>
        </Add>
    </TelemetryProcessors>
    

Je možné telemetrii vzorkovat více než jednou?

  • Ne. SamplingTelemetryProcessors ignorují položky z hlediska vzorkování, pokud je položka již vzorkována. Totéž platí i pro vzorkování příjmu dat, které se u těchto položek, které jsou už vzorkované v samotné sadě SDK, nepoužijí vzorkování.

Proč vzorkování jednoduchého "shromažďování X % každého typu telemetrie"?

  • I když by tento přístup vzorkování poskytoval vysokou míru přesnosti v aproximaci metrik, přerušil by schopnost korelovat diagnostická data na uživatele, relaci a požadavek, což je pro diagnostiku kritické. Vzorkování proto funguje lépe se zásadami, jako je například "shromažďování všech položek telemetrie pro X procent uživatelů aplikace" nebo "shromažďování všech telemetrických dat pro X % požadavků aplikace". U položek telemetrie, které nejsou přidružené k požadavkům (jako je asynchronní zpracování na pozadí), je náhradním objektem "shromáždit X % všech položek pro každý typ telemetrie".

Může se procento vzorkování v průběhu času měnit?

  • Ano, adaptivní vzorkování postupně mění procento vzorkování na základě aktuálně pozorovaného objemu telemetrie.

Pokud používám vzorkování s pevnou rychlostí, jak zjistím, které procento vzorkování bude pro aplikaci fungovat nejlépe?

  • Jedním zezpůsobůchm vzorkováním je zjistit, jakou míru má (viz výše uvedená otázka), a pak pomocí

    V opačném případě musíte hádat. Analyzujte aktuální využití telemetrie v Přehledy aplikace, sledujte jakékoli omezování, ke kterému dochází, a odhadněte objem shromážděných telemetrických dat. Tyto tři vstupy společně s vybranou cenovou úrovní naznačují, kolik byste mohli chtít snížit objem shromážděných telemetrických dat. Zvýšení počtu uživatelů nebo jiného posunu v objemu telemetrie ale může váš odhad zneplatnit.

Co se stane, když nakonfiguruji procento vzorkování tak, aby bylo příliš nízké?

  • Nadměrné procento vzorkování způsobuje nadměrné agresivní vzorkování a snižuje přesnost aproximací, když se aplikace Přehledy pokusí vyrovnat vizualizaci dat pro snížení objemu dat. Může to mít také negativní dopad na vaše diagnostické prostředí, protože některé z zřídka selhávajících nebo pomalých požadavků mohou být vzorkovány.

Co se stane, když nakonfiguruji procento vzorkování tak, aby bylo příliš vysoké?

  • Konfigurace příliš vysokého procenta vzorkování (není dostatečně agresivní) vede k nedostatečnému snížení objemu shromážděné telemetrie. Stále můžete zaznamenat ztrátu telemetrických dat související s omezováním a náklady na používání Přehledy aplikace můžou být vyšší, než jste naplánovali kvůli poplatkům za nadlimitní využití.

Na jakých platformách můžu vzorkování použít?

  • Vzorkování příjmu dat může probíhat automaticky pro libovolnou telemetrii nad určitým objemem, pokud sada SDK neprovádí vzorkování. Tato konfigurace by fungovala, například pokud používáte starší verzi sady ASP.NET SDK nebo sady Java SDK.
  • Pokud používáte aktuální ASP.NET nebo ASP.NET Core sady SDK (hostované buď v Azure, nebo na vlastním serveru), dostanete ve výchozím nastavení adaptivní vzorkování, ale můžete přepnout na pevnou rychlost, jak je popsáno výše. Při vzorkování s pevnou rychlostí se sada SDK prohlížeče automaticky synchronizuje s ukázkovými souvisejícími událostmi.
  • Pokud používáte aktuálního agenta Java, můžete nakonfigurovat applicationinsights.json (pro sadu Java SDK, nakonfigurovat ApplicationInsights.xml) zapnout vzorkování s pevnou rychlostí. Vzorkování je ve výchozím nastavení vypnuté. S vzorkováním s pevnou rychlostí se sada SDK prohlížeče a server automaticky synchronizují s ukázkovými souvisejícími událostmi.

Vždy chci vidět určité vzácné události. Jak je můžu dostat za modul vzorkování?

  • Nejlepší způsob, jak toho dosáhnout, je napsat vlastní telemetriiInitializer, který nastaví SamplingPercentage na 100 u položky telemetrie, kterou chcete zachovat, jak je znázorněno níže. Vzhledem k tomu, že inicializátory se zaručeně spouští před procesory telemetrie (včetně vzorkování), zajistí se, že všechny techniky vzorkování budou tuto položku ignorovat z jakýchkoli aspektů vzorkování. Vlastní inicializátory telemetrie jsou k dispozici v sadě ASP.NET SDK, ASP.NET Core SDK, sadě JavaScript SDK a sadě Java SDK. Můžete například nakonfigurovat inicializátor telemetrie pomocí sady ASP.NET SDK:

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

Starší verze sady SDK

Adaptivní vzorkování je k dispozici pro sadu Application Přehledy SDK pro ASP.NET verze 2.0.0-beta3 a novější, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 a novější a je ve výchozím nastavení povolená.

Vzorkování s pevnou rychlostí je funkce sady SDK ve ASP.NET verzích od 2.0.0 a sady Java SDK verze 2.0.1 a novější.

Před verzí 2.5.0-beta2 sady ASP.NET SDK a v2.2.0-beta3 sady ASP.NET Core SDK bylo rozhodnutí vzorkování založeno na hodnotě hash ID uživatele pro aplikace, které definují "user" (tj. nejtypičtější webové aplikace). U typů aplikací, které nedefinovali uživatele (například webové služby), bylo rozhodnutí vzorkování založeno na ID operace požadavku. Nejnovější verze sad SDK ASP.NET a ASP.NET Core používají ID operace pro rozhodnutí vzorkování.

Další kroky