Vzorkování ve službě Application Insights

Vzorkování je funkce v Azure Application Přehledy. Jedná se o doporučený způsob, jak snížit náklady na telemetrická data, data a úložiště při zachování statisticky správné analýzy aplikačních dat. Vzorkování také pomáhá zabránit omezování telemetrie Přehledy aplikací. Filtr vzorkování vybere položky, které souvisejí, abyste při diagnostických šetřeních mohli procházet mezi položkami.

Když se na portálu zobrazí počty metrik, renormalizuje se, aby se vzalo v úvahu vzorkování. Tím se minimalizuje 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 sad APPLICATION Přehledy ASP.NET a ASP.NET Core SDK (Software Development Kit). Používá ji také Azure Functions.
  • Vzorkování s pevnou rychlostí je k dispozici v nejnovějších verzích sad Sdk služby Application 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 u vybraných závislostí, požadavků a kontroly stavu použít různé vzorkovací frekvence. Pomocí přepsání vzorkování můžete vyladit některé závislosti s šumem, zatímco například všechny důležité chyby se uchovávají na 100 %. Jedná se o formu pevného vzorkování, která poskytuje přesnou úroveň kontroly nad telemetrií.
  • Vzorkování příjmu dat funguje na koncovém Přehledy služby Application Přehledy. Platí pouze v případě, že není použito žádné jiné vzorkování. Pokud sada SDK ukázky telemetrie, vzorkování příjmu dat je zakázáno.
  • Pokud u webových aplikací zachytáte vlastní události a potřebujete zajistit, aby se sada událostí uchovávala 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 povolené vzorkování.

Následující tabulka shrnuje typy vzorkování dostupné pro jednotlivé sady SDK a typy aplikací:

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

Poznámka

Informace na většině této stránky se vztahují na aktuální verze sady Application Přehledy SDK. Informace o starších verzích sady SDK najdete v části níže.

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ší ASP.NET/ASP.NET Core a z Azure Functions. Toto je výchozí vzorkování při použití sady SDK ASP.NET nebo ASP.NET Core. Adaptivní vzorkování je aktuálně k dispozici ASP.NET telemetrii na straně serveru a pro Azure Functions.

  • Vzorkování s pevnou rychlostí snižuje objem telemetrických dat odesílaných z ASP.NET nebo ASP.NET Core nebo serveru Java a z prohlížečů uživatelů. Rychlost nastavíte vy. Klient a server synchronizují vzorkování, takže ve vyhledávání můžete procházet mezi souvisejícími zobrazeními stránek a požadavky.

  • Vzorkování příjmu dat probíhá v koncovém Přehledy služby Application Přehledy. Zahodí některá telemetrická data přicházející z vaší aplikace pomocí vzorkovací frekvence, kterou nastavíte. Nezmenšuje telemetrické přenosy odesílané z vaší aplikace, ale pomáhá udržet si měsíční kvótu. Hlavní výhodou vzorkování příjmu dat 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 neplatí, když jsou v provozu žádné jiné typy vzorkování.

Důležité

Pokud jsou pro typ telemetrie povolené adaptivní metody vzorkování nebo metody vzorkování s pevnou rychlostí, je pro tyto telemetrie zakázané vzorkování příjmu dat. Typy telemetrie, které jsou vyloučené ze vzorkování na úrovni sady SDK, ale budou stále podléhat vzorkování příjmu dat rychlostí nastavenou na portálu.

Adaptivní vzorkování

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

Tip

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

Svazek se automaticky upraví tak, aby se udržel v rámci zadané maximální přenosové rychlosti, a řídí se pomocí nastavení MaxTelemetryItemsPerSecond . Pokud aplikace produkuje nízké množství telemetrie, například při ladění nebo kvůli nízkému využití, procesor vzorkování položky zahodí, pokud je objem nižší než MaxTelemetryItemsPerSecond . S tím, jak se zvyšuje objem telemetrie, se vzorkovací frekvence upraví tak, aby se dosáhlo cílového objemu. Úprava se přepočítá v pravidelných intervalech a je založená na klouzavým průměru odchozí přenosové rychlosti.

K dosažení cílového objemu se některá z vygenerovaných telemetrických dat zahodí. Stejně jako jiné typy vzorkování si ale algoritmus zachovává související telemetrické položky. Když například prověříte telemetrii ve vyhledávání, budete moct najít požadavek související s konkrétní výjimkou.

Počty metrik, jako je frekvence požadavků a míra výjimek, se upraví tak, aby kompenzovat vzorkovací frekvenci, aby v Průzkumníku metrik měly 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í, ne pro ASP.NET Core aplikace. Další informace o konfiguraci adaptivního vzorkování ASP.NET Core aplikacím najdete dále v tomto dokumentu.

V ApplicationInsights.config můžete v uzlu upravit několik AdaptiveSamplingTelemetryProcessor parametrů. 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 rámci cílové rychlosti provozu na portálu application Přehledy portal.

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

    Interval, ve kterém se znovu vyhodnotí aktuální rychlost telemetrie. Vyhodnocení se provádí jako klouzavý průměr. Tento interval můžete zkrátit, pokud vaše telemetrie nese odpovědnost za náhlé shluky.

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

    Jak brzy po změně procentuální hodnoty vzorkování můžeme opět snížit procento vzorkování, aby se zachytilo méně dat?

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

    Jak brzy po změně procentuální hodnoty vzorkování můžeme znovu zvýšit procento vzorkování, aby bylo možné zachytit více dat?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    S tím, jak se mění procento vzorkování, jakou minimální hodnotu můžeme nastavit?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    S tím, jak se mění procento vzorkování, jakou maximální hodnotu můžeme nastavit?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    Při výpočtu klouzavýho průměru určuje váhu, která se má přiřadit k nejnovější hodnotě. Použijte hodnotu rovnou nebo menší než 1. Menší hodnoty nastaví algoritmus méně aktivní na náhlé změny.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    Množství telemetrie, které se má vzorkovat při právě spuštění aplikace Při ladění tuto hodnotu nezmenšujte.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    Středníkem oddělený seznam typů, u kterých nechcete, aby se vzorkování nevztahovalo. Rozpoznané typy jsou: Dependency , Event , Exception , PageView , Request , Trace . Přenáší se veškerá telemetrie určených typů; typy, které nejsou zadány, budou vzorkovat.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Středníkem oddělený seznam typů, u kterých chcete provést vzorkování. Rozpoznané typy jsou: Dependency , Event , Exception , PageView , Request , Trace . Zadané typy budou vzorkovat; všechny telemetrie ostatních typů budou vždy přenášeny.

Chcete-li přepnout 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 programově nastavit.

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

  2. Pro 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();
    

    (Další informace o procesorech telemetrie.)

Vzorkovací frekvenci můžete také upravit pro každý typ telemetrie jednotlivě, nebo můžete dokonce vyloučit, že některé z nich jsou odebírány na všech typech:

// 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 aplikace ASP.NET Core

pro aplikace ASP.NET Core není k dispozici ApplicationInsights.config , takže se veškerá konfigurace provádí prostřednictvím kódu. adaptivní vzorkování je ve výchozím nastavení povolené pro všechny aplikace ASP.NET Core. Můžete zakázat nebo upravit chování vzorkování.

Vypnutí adaptivního vzorkování

výchozí funkci vzorkování lze zakázat při přidávání služby Application Insights v ConfigureServices rámci metody pomocí ApplicationInsightsServiceOptions Startup.cs souboru:

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í. Pomocí následujících kroků přidejte vzorkování s dalšími možnostmi přizpůsobení.

Konfigurovat nastavení vzorkování

TelemetryProcessorChainBuilderK přizpůsobení chování vzorkování použijte metody rozšíření, jak je znázorněno níže.

Důležité

Použijete-li tuto metodu ke konfiguraci vzorkování, nezapomeňte nastavit aiOptions.EnableAdaptiveSampling vlastnost na hodnotu false při volání AddApplicationInsightsTelemetry() . Po provedení této změny je nutné postupovat podle pokynů v bloku kódu níže, aby bylo možné adaptivní vzorkování znovu povolit s vlastními nastaveními. V takovém případě může dojít k nadbytečnému příjmu dat. Vždy testovat po změně nastavení vzorkování a nastavte vhodný denní limit dat , který vám umožní ří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 můžete nakonfigurovat adaptivní vzorkování pro aplikace běžící v Azure Functions.

Vzorkování s pevnou sazbou

Vzorkování s pevnou sazbou omezuje provoz odeslaný z webového serveru a webových prohlížečů. Na rozdíl od adaptivního vzorkování redukuje telemetrie za pevnou sazbu, kterou jste určili. vzorkování s pevnou sazbou je k dispozici pro aplikace ASP.NET, ASP.NET Core, Java a Python.

Podobně jako u jiných technik vzorkování to také uchovává související položky. Také synchronizuje vzorkování klienta a serveru, aby se související položky zachovaly – například při zobrazení stránky v hledání můžete najít související požadavky serveru.

V Průzkumník metrik se tarify, jako je počet požadavků a výjimek, vynásobí faktorem, který kompenzuje vzorkovací frekvenci, aby byly přibližně správné.

konfigurace vzorkování s pevnou sazbou pro ASP.NETé aplikace

  1. Zakázat adaptivní vzorkování: v ApplicationInsights.config , odeberte nebo 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 pevnými rychlostmi. Přidat 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>
    

    Případně místo nastavení parametru vzorkování v ApplicationInsights.config souboru můžete tyto hodnoty programově nastavit:

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

    (Další informace o procesorech telemetrie.)

konfigurace vzorkování s pevnou sazbou pro ASP.NET Coreé aplikace

  1. Zakázat adaptivní vzorkování: v metodě lze provádět změny ConfigureServices 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 pevnými rychlostmi. 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 sazbou pro aplikace v jazyce Java

Ve výchozím nastavení se v automatické instrumentaci Java a sadě SDK nepovolí žádné vzorkování. V současné době se podporují automatické instrumentace Java, přepsání vzorkování a vzorkování pevné míry. Adaptivní vzorkování není v jazyce Java podporováno.

Konfigurace automatické instrumentace Java

Konfigurace sady Java 2. x SDK

  1. stáhněte a nakonfigurujte svou webovou aplikaci pomocí nejnovější sady SDK pro Application Insights Java.

  2. Povolit modul vzorkování s pevnými rychlostmi přidáním následujícího fragmentu 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 z vzorkování, jsou: Dependency , Event , Exception , PageView , a Request Trace .

Poznámka

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

Konfigurace vzorkování s pevnou sazbou pro aplikace OpenCensus v Pythonu

Instrumentujte svoji aplikaci pomocí nejnovějšího OpenCensus Azure monitor vývozců.

Poznámka

Vzorkování s pevnou sazbou není pro exportéra metrik k dispozici. To znamená, že vlastní metriky jsou jediné typy telemetrie, ve kterých nelze nakonfigurovat vzorkování. Exportér metrik pošle veškerou telemetrii, kterou sleduje.

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

V rámci konfigurace Tracer můžete zadat vzorkovník sampler. Pokud není zadaný žádný explicitní vzorkovník, použije se ProbabilitySampler ve výchozím nastavení. ve ProbabilitySampler výchozím nastavení by se použila sazba 1/10000, což znamená, že se do Application Insights pošle jeden z každých 10000 požadavků. Informace o zadání vzorkovací frekvence najdete níže.

Chcete-li určit vzorkovací frekvenci, ujistěte se, že vaše hodnota Tracer Určuje vzorkovník s vzorkovací frekvencí 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 Application Insights.

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

Vzorkování s pevnou sazbou pro protokoly

Vzorkování s pevnou sazbou můžete nakonfigurovat AzureLogHandler změnou logging_sampling_rate volitelného argumentu. Pokud není zadán žádný argument, bude použita 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 Application Insights.

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

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

webové stránky založené na jazyce JavaScript je možné nakonfigurovat tak, aby používaly Application Insights. Telemetrie se odesílá z klientské aplikace spuštěné v prohlížeči uživatele a stránky můžou být hostované z libovolného serveru.

když nakonfigurujete webové stránky založené na javascriptu pro Application Insights, upravte fragment javascriptu, který získáte z portálu Application Insights.

Tip

v ASP.NET aplikace se zahrnutým jazykem JavaScript fragment kódu obvykle nachází _Layout.cshtml .

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

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

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

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

Sada JavaScript SDK na straně klienta se účastní vzorkování s pevnou sazbou ve spojení se sadou SDK na straně serveru. Instrumentované stránky odesílají telemetrie na straně klienta pouze ze stejného uživatele, pro který sada SDK na straně serveru provedla rozhodnutí, aby byla zahrnuta do vzorkování. Tato logika je navržená tak, aby udržovala integritu uživatelských relací napříč klientskými a serverovými aplikacemi. v důsledku toho můžete z jakékoliv konkrétní položky telemetrie v Application Insights najít všechny další položky telemetrie pro tohoto uživatele nebo relaci a v hledání můžete procházet mezi souvisejícími zobrazeními stránky a požadavky.

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

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

Vzorkování přijímání

vzorkování ingestování funguje v okamžiku, kdy telemetrie z webového serveru, prohlížeče a zařízení dosáhne koncového bodu služby Application Insights. i když se tím nesnižuje provoz telemetrie odeslaný z vaší aplikace, snižuje se množství zpracovaných a uchovávaných (a účtuje se za) Application Insights.

Tento typ vzorkování použijte, pokud vaše aplikace často prochází za 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 tempo vzorkování na stránce využití a odhadované náklady:

v okně přehled aplikace klikněte na Nastavení, kvóta, ukázky, vyberte vzorkovací frekvenci a klikněte na aktualizovat.

Podobně jako jiné typy vzorkování, algoritmus zachovává související položky telemetrie. Například při kontrole telemetrie ve službě Search budete moci najít požadavek související s konkrétní výjimkou. Počty metrik, jako je rychlost požadavků a četnost výjimek, se uchovávají správně.

datové body, které jsou zahozeny vzorkováním, nejsou k dispozici v žádné Application Insights funkci, jako je například průběžný Export.

Vzorkování ingestování nefunguje v průběhu operace vzorkování adaptivního nebo fixního přenosu. adaptivní vzorkování je ve výchozím nastavení povoleno, pokud je použita sada ASP.NET sdk nebo sada sdk sady ASP.NET Core nebo když je Application Insights povolena v Azure App Service nebo pomocí Monitorování stavu. když koncový bod služby Application Insights obdrží telemetrii, prověřuje telemetrii a pokud je frekvence vzorkování nahlášena jako méně než 100% (což indikuje, že se telemetrie odebírá), bude vzorkovací frekvence ingestování, kterou jste nastavili, ignorována.

Upozornění

Hodnota zobrazená na dlaždici portálu označuje hodnotu, kterou jste nastavili pro vzorkování přijímání. Nepředstavuje skutečný vzorkovací kmitočet, pokud je v provozu nějaký druh vzorkování sady SDK (adaptivní nebo fixní frekvence).

Kdy použít vzorkování

Obecně platí pro většinu malých a středně velkých aplikací, které nepotřebujete vzorkování. Nejužitečnější diagnostické informace a nejpřesnější statistiky se získávají shromažďováním dat ze všech vašich uživatelských aktivit.

Hlavní výhody vzorkování:

  • služba Application Insights vychází z datových bodů, když vaše aplikace pošle velmi vysokou míru telemetrie v krátkém časovém intervalu. Vzorkování snižuje pravděpodobnost, že dojde k omezování, které vaše aplikace uvidí.
  • Aby se zachovala kvóta datových bodů pro vaši cenovou úroveň.
  • Pro snížení síťového provozu z kolekce telemetrie.

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

Vzorkování ingestování použijte v těchto případech:

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

Vzorkování s pevnou sazbou použijte v těchto případech:

  • Chcete synchronizovat vzorkování mezi klientem a serverem, takže při zkoumání událostí ve vyhledávánímůžete procházet mezi souvisejícími událostmi klienta a serveru, jako jsou například zobrazení stránky a požadavky HTTP.
  • Jste si jistí vhodné procento vzorkování pro vaši aplikaci. Měl by být dostatečně vysoký, aby dosáhl přesné metriky, ale překročil sazbu, která překračuje vaši kvótu a omezení omezení.

Použít adaptivní vzorkování:

Pokud se podmínky použití ostatních forem vzorkování nepoužijí, doporučujeme adaptivní vzorkování. toto nastavení je ve výchozím nastavení povoleno v sadě ASP.NET/ASP.NET Core SDK. Nebude snižovat provoz, dokud nedosáhnete určité minimální míry, takže weby s nízkým použitím nebudou pravděpodobně vzorkovat vůbec.

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

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

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

Pokud vidíte, že RetainedPercentage pro libovolný typ je menší než 100, tento typ telemetrie se vzorkuje.

Důležité

Application Insights nezahrnuje ukázkovou relaci, metriky (včetně vlastních metrik) nebo typy telemetrie čítače výkonu v jakémkoli z metod vzorkování. Tyto typy jsou vždycky vyloučené z vzorkování, protože snížení přesnosti může být pro tyto typy telemetrie vysoce nežádoucí.

Jak vzorkování funguje

Algoritmus vzorkování určuje, které položky telemetrie se mají odpojit a které se mají zachovat. to platí bez ohledu na to, jestli se vzorkování provádí v sadě SDK nebo ve službě Application Insights. rozhodnutí o vzorkování vychází z několika pravidel, která se zaměřují na zachování všech vzájemně se nedotčených datových bodů, což zachovává diagnostické prostředí v Application Insights, které je možné a spolehlivé i s omezenou datovou sadou. Pokud například vaše aplikace obsahuje neúspěšný požadavek obsažený v ukázce, zachová se další položky telemetrie (například výjimka a trasování pro tuto žádost). Vzorkování buď udržuje, nebo je ponechá dohromady. výsledkem je, že když se podíváte na podrobnosti o požadavku v Application Insights, můžete vždy zobrazit žádost spolu s jejími přidruženými položkami telemetrie.

Rozhodnutí o vzorkování vychází z ID operace požadavku. to znamená, že všechny položky telemetrie patřící do konkrétní operace jsou buď zachované, nebo vyřazené. Pro položky telemetrie, které nemají nastaven ID operace (například položky telemetrie hlášené z asynchronních vláken bez kontextu HTTP), zachytí jenom procento položek telemetrie každého typu.

když prezentujete telemetrii zpátky, služba Application Insights upravuje metriky podle stejného procenta vzorkování, které bylo použito v době shromažďování, k náhradě chybějících datových bodů. proto při prohlížení telemetrie v Application Insights se uživatelům zobrazuje statisticky správné aproximace, které se velmi blíží skutečným číslům.

Přesnost aproximace je převážně závislá na nakonfigurované procentuální hodnotě vzorkování. Také se zvyšuje přesnost aplikací, které zpracovávají velký objem obecně podobných požadavků od mnoha uživatelů. Na druhé straně pro aplikace, které nefungují s významným zatížením, není vzorkování nutné, protože tyto aplikace mohou obvykle posílat veškerou telemetrii při zachování kvóty, aniž by došlo ke ztrátě dat z omezení.

Nejčastější dotazy

jaké jsou výchozí chování vzorkování v ASP.NET a ASP.NET Core sadách sdk?

  • Pokud používáte některou z nejnovějších verzí výše uvedené sady SDK, adaptivní vzorkování je ve výchozím nastavení povolené s pěti položkami telemetrie za sekundu. AdaptiveSamplingTelemetryProcessorVe výchozím nastavení jsou přidány dva uzly a jeden zahrnuje Event typ při vzorkování, zatímco druhý vylučuje Event typ 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 pro všechny ostatní typy, a tím zajistit, že Events jsou vzorky odděleně od jiných typů telemetrie. Události se obvykle používají pro obchodní telemetrie a pravděpodobně by na ně neměly mít vliv žádné diagnostické svazky telemetrie.

    Následuje ukázka ApplicationInsights.config vygenerovaného výchozího souboru. v ASP.NET Core je v kódu povolené stejné výchozí chování. Chcete-li změnit toto výchozí chování, použijte Příklady v předchozí části této stránky .

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

  • No. SamplingTelemetryProcessors ignorovat položky z hlediska vzorkování, pokud je položka již vzorkovat. Totéž platí také pro vzorkování ingestování, které nepoužijí vzorkování na ty položky, které jsou již v samotné sadě SDK navzorkované.

Proč není vzorkování jednoduché "shromáždit X procento každého typu telemetrie"?

  • I když tento přístup k odběru vzorků poskytne vysokou úroveň přesnosti v rámci aproximace metriky, mohl by poškodit možnost korelace diagnostických dat podle uživatele, relace a žádosti, což je pro diagnostiku velmi důležité. Proto vzorkování funguje lépe se zásadami, jako je "shromáždění všech položek telemetrie pro X procent uživatelů aplikace" nebo "shromáždění všech telemetrie pro X procent žádostí o aplikace". Pro položky telemetrie, které nejsou přidruženy k žádostem (jako je například asynchronní zpracování na pozadí), by záloha měla být shromážděna X procent všech položek pro každý typ telemetrie.

Může se v průběhu času změnit procentuální hodnota vzorkování?

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

Jak mám při použití vzorkování s pevnou sazbou vědět, jaké procento vzorkování bude fungovat nejlépe pro moji aplikaci?

  • Jedním ze způsobů, jak začít s adaptivním vzorkováním, zjistíte, ke které sazbě se připravuje (viz výše uvedený dotaz), a pak se pomocí této sazby přepne na vzorkování s pevnou sazbou.

    V opačném případě je nutné odhadnout. analyzujte své aktuální využití telemetrie v Application Insights, sledujte jakékoliv omezení, ke kterému dochází, a odhad objemu shromážděné telemetrie. Tyto tři vstupy společně s vaší vybranou cenovou úrovní navrhují, kolik můžete chtít snížit objem shromážděné telemetrie. Zvýšení počtu uživatelů nebo nějakého jiného posunu v rámci telemetrie může ale způsobit zrušení platnosti vašeho odhadu.

Co se stane, když nakonfigurujem procento vzorkování jako příliš nízké?

  • příliš nízké procenta vzorkování způsobují nadměrné vzorkování a při Application Insights pokusech o kompenzaci vizualizace dat pro snížení objemu dat zmenšují přesnost sblížení. I vaše diagnostické prostředí může mít negativní vliv na to, že některé z častých neúspěšných nebo pomalých žádostí můžou být ukázkové.

Co se stane, když nakonfigurujem procento vzorkování jako 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. může se stát, že dojde ke ztrátě dat telemetrie v souvislosti s omezováním a náklady na použití Application Insights můžou být vyšší, než jste naplánovali z důvodu poplatků za nadlimitní využití.

Na kterých platformách je možné vzorkování použít?

  • Vzorkování příjmu se může vyskytnout automaticky pro všechny telemetrie nad určitým svazkem, pokud sada SDK neprovádí vzorkování. tato konfigurace by mohla fungovat například v případě, že používáte starší verzi sady ASP.NET sdk nebo Java sdk.
  • pokud používáte aktuální ASP.NET nebo ASP.NET Core sady sdk (hostované buď v Azure, nebo na vašem vlastním serveru), můžete ve výchozím nastavení získat adaptivní vzorkování, ale můžete přepnout na pevný kurz, jak je popsáno výše. Při vzorkování s pevnou sazbou se sada SDK pro prohlížeč automaticky synchronizuje s ukázkovými událostmi, které se týkají.
  • Pokud používáte aktuálního agenta Java, můžete pro applicationinsights.json vzorkování s pevnou sazbou nakonfigurovat (pro sadu Java SDK, nakonfigurovat ApplicationInsights.xml ). Vzorkování je ve výchozím nastavení vypnuté. Při vzorkování s pevnou sazbou se sada SDK pro prohlížeč a server automaticky synchronizuje s ukázkovými událostmi, které jsou v relaci.

Existují určité vzácné události, které vždycky chcete vidět. Jak se dají dostat za modul vzorkování?

  • Nejlepším způsobem, jak toho dosáhnout, je napsat vlastní TelemetryInitializer, který nastaví SamplingPercentage 100 na položku telemetrie, kterou chcete uchovat, jak je znázorněno níže. Vzhledem k tomu, že je zaručeno spouštění inicializátorů před procesory telemetrie (včetně vzorkování), zajistí to, že všechny techniky vzorkování budou tuto položku ignorovat z jakéhokoli hlediska vzorkování. vlastní inicializátory telemetrie jsou k dispozici v sadě ASP.NET sdk, sadě 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 Insights SDK pro ASP.NET v 2.0.0-beta3 a novější, Microsoft. ApplicationInsights. AspNetCore SDK v 2.2.0-beta1 a novější a je ve výchozím nastavení povolená.

vzorkování s pevnou sazbou je funkce sady SDK v ASP.NET verzích od 2.0.0 a Java SDK verze 2.0.1 a vyšší.

v rámci ASP.NET 2.5.0 sady sdk a v 2.2.0-beta3 sady ASP.NET Core sdk bylo rozhodnutí o vzorkování založeno na hodnotě hash ID uživatele u aplikací, které definují "user" (tj. ve většině typických webových aplikací). U typů aplikací, které nedefinují uživatele (například webové služby), bylo rozhodnutí o vzorkování založené na ID operace požadavku. Nedávné verze sady SDK ASP.NET a ASP.NET Core používají ID operace pro rozhodnutí o vzorkování.

Další kroky