Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vzorkování je funkce v Application Insights. Je to doporučený způsob, jak snížit provoz telemetrie, náklady na data a náklady na úložiště a současně zachovat statisticky správnou analýzu aplikačních dat. Vzorkování také pomáhá vyhnout se omezování telemetrie v Application Insights. Filtr vzorkování vybere položky, které jsou související, abyste mohli přecházet mezi položkami při diagnostických šetřeních.
Když se na portálu zobrazí počty metrik, jsou renormalizovány, aby zohlednily vzorkování. Tím minimalizujete jakýkoli vliv na statistiku.
Poznámka:
- Pokud jste přijali naši distribuci OpenTelemetry a hledáte možnosti konfigurace, přečtěte si téma Povolení vzorkování.
Stručný souhrn
- Existují tři různé typy vzorkování: adaptivní vzorkování, vzorkování s pevnou frekvencí a vzorkování příjmu.
- Adaptivní vzorkování je ve výchozím nastavení povolené ve všech nejnovějších verzích sady Application Insights ASP.NET a ASP.NET Core Software Development Kit (SDK) a Azure Functions.
- Vzorkování s pevnou rychlostí je k dispozici v nedávných verzích sad Application Insights SDK pro ASP.NET, ASP.NET Core, Java (agent i sada SDK), JavaScript a Python.
- V Javě je k dispozici přepisování nastavení vzorkování a je užitečné, když potřebujete použít různé vzorkovací frekvence u vybraných závislostí, požadavků a zdravotních kontrol. Pomocí nástrojů pro přepsání vzorkování vylaďte některé hlučné závislosti, zatímco všechny důležité chyby se například udržují na 100 %. Toto chování 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 Application Insights. Použije se jenom v případě, že se neprovádí žádné jiné vzorkování. Pokud sada SDK vzorkuje vaši telemetrii, odběr vzorků při příjmu je zakázaný.
- Pokud u webových aplikací protokolujete vlastní události a potřebujete zajistit, aby byla sada událostí zachována nebo zahozena 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 Insights SDK | Podporuje se adaptivní vzorkování | Podporované vzorkování s pevnou rychlostí | Podporováno vzorkování příjmu |
---|---|---|---|
ASP.NET | Ano (ve výchozím nastavení zapnuto) | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
ASP.NET Core | Ano (ve výchozím nastavení zapnuto) | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
Azure Functions (cloudové funkce od Microsoftu) | Ano (ve výchozím nastavení zapnuto) | Ne | Pouze pokud není v platnosti žádné jiné vzorkování |
Java | Ne | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
JavaScript | Ne | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
Node.JS | Ne | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
Python | Ne | Ano | Pouze pokud není v platnosti žádné jiné vzorkování |
Všichni ostatní | Ne | Ne | Ano |
Poznámka:
- Agent aplikace Java 3.4.0 a novější používá vzorkování s omezením rychlosti jako výchozí při odesílání telemetrie do Application Insights. Další informace najdete v tématu Vzorkování s omezením rychlosti.
- Informace ve většině této stránky se týkají aktuálních verzí sady SDK pro Application Insights. Informace o starších verzích sad SDK najdete ve starších verzích sady SDK.
Kdy použít vzorkování
Obecně platí, že u většiny malých a středních aplikací 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ů.
Mezi hlavní výhody vzorkování patří:
- Když vaše aplikace v krátkém časovém intervalu odesílá velké množství telemetrie, služba Application Insights omezí (zahodí) datové body. Vzorkování snižuje pravděpodobnost, že u vaší aplikace dojde k omezování.
- Aby byla zachována kvóta datových bodů pro vaši cenovou úroveň.
- Pro snížení síťového provozu z telemetrie.
Jak funguje vzorkování
Algoritmus vzorkování rozhoduje, které položky telemetrie uchovává nebo zahazuje, ať vzorkování provádí SDK nebo služba Application Insights. Řídí se pravidly pro zachování všech vzájemně propojených datových bodů beze změny, což zajišťuje, že Application Insights poskytuje použitelné a spolehlivé diagnostické prostředí, a to i s méně daty. Pokud například vzorek obsahuje neúspěšný požadavek, zachová všechny související položky telemetrie, jako jsou výjimky a stopování. Díky tomu se při zobrazení podrobností žádosti ve službě Application Insights vždy zobrazí požadavek a související 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í nastavené ID operace (například položky telemetrie hlášené z asynchronních vláken bez kontextu HTTP), vzorkování jednoduše zachycuje procento položek telemetrie každého typu.
Při prezentování telemetrie zpět vám služba Application Insights upraví metriky stejným procentem vzorkování, které se použilo v době shromažďování, aby kompenzovala chybějící datové body. Při pohledu na telemetrii v Application Insights se tedy uživatelům zobrazují statisticky správné aproximace, které jsou blízko skutečných čísel.
Přesnost aproximace do značné míry závisí na nakonfigurované procento vzorkování. Také se zvyšuje přesnost pro aplikace, které zpracovávají velký objem podobných požadavků od velkého počtu 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 obvykle můžou posílat veškerou telemetrii při zachování kvóty, aniž by to způsobilo ztrátu dat z omezování.
Typy vzorkování
Existují tři různé metody vzorkování:
Adaptivní vzorkování automaticky upraví objem telemetrie odesílaných ze sady SDK v aplikaci ASP.NET/ASP.NET Core a z Azure Functions. Je to výchozí vzorkování, když používáte sadu ASP.NET nebo ASP.NET Core SDK. Adaptivní vzorkování je aktuálně dostupné jenom pro telemetrii na straně serveru ASP.NET/ASP.NET Core 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 synchronizují odběr dat tak, aby umožnili přechod mezi souvisejícími zobrazeními stránek a požadavky při vyhledávání.
Vzorkování příjmu dat probíhá v koncovém bodu služby Application Insights. Zahodí některá telemetrická data, která dorazí z vaší aplikace, při míře vzorkování, kterou nastavíte. Nezmenšuje telemetrický provoz odesílaný z vaší aplikace, ale pomáhá udržet 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í to, když jsou v provozu jiné typy vzorkování.
Důležité
Pokud jsou pro typ telemetrie povolené adaptivní nebo pevné vzorkovací metody, vzorkování ingestce je pro tuto telemetrii zakázáno. Typy telemetrie, které jsou vyloučené ze vzorkování na úrovni sady SDK, se však nadále budou řídit příjmovým vzorkováním podle rychlosti nastavené na portálu.
Adaptivní vzorkování
Adaptivní vzorkování ovlivňuje objem telemetrie odesílané z vaší webové serverové aplikace do koncového bodu služby Application Insights.
Návod
Adaptivní vzorkování je ve výchozím nastavení povolené, pokud používáte sadu ASP.NET SDK nebo sadu ASP.NET Core SDK a ve výchozím nastavení je pro Azure Functions povolená.
Hlasitost se automaticky upraví tak, aby zůstala v rámci omezení rychlosti MaxTelemetryItemsPerSecond
. Pokud aplikace generuje nízkou telemetrii, například během ladění nebo nízkého využití, nezahodí položky, pokud objem zůstane pod MaxTelemetryItemsPerSecond
. S nárůstem objemu telemetrie se upraví vzorkovací frekvence, aby dosáhla cílového objemu. Tato úprava, přepočítána v pravidelných intervalech, je založena na klouzavém průměru odchozí přenosové rychlosti.
K dosažení cílového objemu se některá vygenerovaná telemetrie zahodí. Stejně jako jiné typy vzorkování si algoritmus uchovává související položky telemetrie. Když například kontrolujete telemetrii ve službě Search, můžete 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 kompenzovala vzorkovací frekvenci, aby zobrazovaly přibližné hodnoty v Průzkumníku metrik.
Konfigurace adaptivního vzorkování pro aplikace ASP.NET
Poznámka:
Tato část se týká ASP.NET aplikací, nikoli aplikací ASP.NET Core. Další informace o konfiguraci adaptivního vzorkování pro aplikace ASP.NET Core najdete dále v tomto dokumentu.
V ApplicationInsights.config
můžete upravit několik parametrů uzlu AdaptiveSamplingTelemetryProcessor
. Zobrazená čísla 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 Application Insights.
<EvaluationInterval>00:00:15</EvaluationInterval>
Interval, ve kterém se opětovně zhodnotí aktuální rychlost telemetrie. Vyhodnocení se provádí jako klouzavý průměr. Můžete zkrátit tento interval, pokud je vaše telemetrie náchylná k náhlým výkyvům.
<SamplingPercentageDecreaseTimeout>00:02:00</SamplingPercentageDecreaseTimeout>
Když se změní procentuální hodnota vzorkování, určí, jak rychle můžeme procento vzorkování znovu snížit, aby se zachytála méně dat.
<SamplingPercentageIncreaseTimeout>00:15:00</SamplingPercentageIncreaseTimeout>
Když se změní procentuální hodnota vzorkování, určuje, jak brzy můžeme procento vzorkování znovu zvýšit, abychom zachytili více dat.
<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 určuje tato hodnota váhu, která má být přiřazena k nejnovější hodnotě. Použijte hodnotu rovnou nebo menší než 1. Menší hodnoty činí algoritmus méně reaktivní na náhlé změny.
<InitialSamplingPercentage>100</InitialSamplingPercentage>
Množství telemetrie, která se má vzorkovat při spuštění aplikace. Při ladění tuto hodnotu nezmenšujte.
<ExcludedTypes>type;type</ExcludedTypes>
Seznam typů oddělených středníkem, které nechcete zahrnout do vzorkování. Rozpoznané typy jsou:
Dependency
,Event
,Exception
PageView
,Request
, ,Trace
. Veškerá telemetrie zadaných typů se přenáší; typy, které nejsou zadané, se vzorkují.<IncludedTypes>type;type</IncludedTypes>
Seznam typů oddělených středníkem, které chcete podrobit vzorkování. Rozpoznané typy jsou:
Dependency
,Event
,Exception
PageView
,Request
, ,Trace
. Zadané typy se vzorkují; veškerá telemetrie ostatních typů se vždy přenáší.
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.
Odeberte všechny
AdaptiveSamplingTelemetryProcessor
uzly ze.config
souboru.Pomocí následujícího fragmentu kódu nakonfigurujte adaptivní vzorkování:
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();
(Informace o procesorech telemetrie.)
Můžete také upravit vzorkovací frekvenci pro každý typ telemetrie jednotlivě nebo dokonce vyloučit určité typy ze 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 aplikace ASP.NET Core
ASP.NET základní aplikace je možné nakonfigurovat v kódu nebo prostřednictvím appsettings.json
souboru. Další informace najdete v tématu Konfigurace v ASP.NET Core.
Adaptivní vzorkování je ve výchozím nastavení povolené pro všechny aplikace ASP.NET Core. Chování vzorkování můžete vypnout nebo přizpůsobit.
Vypnutí adaptivního vzorkování
Při přidávání služby Application Insights je možné zakázat výchozí funkci vzorkování.
Přidejte ApplicationInsightsServiceOptions
za metodu WebApplication.CreateBuilder()
v souboru Program.cs
:
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
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í následujících rozšiřujících TelemetryProcessorChainBuilder
metod můžete přizpůsobit chování vzorkování.
Důležité
Pokud tuto metodu používáte ke konfiguraci vzorkování, nezapomeňte nastavit vlastnost na aiOptions.EnableAdaptiveSampling
, když voláte false
pomocí AddApplicationInsightsTelemetry()
. Po provedení této změny pak musíte postupovat podle pokynů v následujícím bloku kódu, abyste znovu povolili adaptivní vzorkování s použitím 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.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();
Další nastavení vzorkování můžete přizpůsobit pomocí třídy SamplingPercentageEstimatorSettings :
using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MinSamplingPercentage = 0.01,
MaxSamplingPercentage = 100,
MaxTelemetryItemsPerSecond = 5
}, null, excludedTypes: "Dependency");
Konfigurace adaptivního vzorkování pro Azure Functions
Podle pokynů na této stránce nakonfigurujte adaptivní vzorkování pro aplikace spuštěné ve službě Azure Functions.
Vzorkování s pevnou frekvencí
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í, o které rozhodujete vy. Vzorkování s pevnou rychlostí je k dispozici pro aplikace ASP.NET, ASP.NET Core, Java a Python.
Stejně jako jiné techniky uchovává také související položky. Synchronizuje také vzorkování klienta a serveru, aby se zachovaly související položky. Když se například 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ý kompenzuje vzorkovací frekvenci, aby byly co nejpřesnější.
Konfigurace vzorkování s pevnou rychlostí pro aplikace ASP.NET
Zakažte adaptivní vzorkování: V
ApplicationInsights.config
odeberte nebo okomentujte uzelAdaptiveSamplingTelemetryProcessor
.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
Povolte modul vzorkování s pevnou rychlostí. Přidejte tento fragment kódu do
ApplicationInsights.config
:V tomto příkladu je Procento vzorkování 20, takže je vybráno 20 % všech položek. Hodnoty v Průzkumníku metrik se vynásobí hodnotou (100/20) = 5 , aby bylo možné kompenzovat.
<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>
Případně 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();
(Informace o procesorech telemetrie.)
Konfigurace vzorkování s pevnou rychlostí pro aplikace ASP.NET Core
Zákaz adaptivního vzorkování
Změny lze provést po
WebApplication.CreateBuilder()
metodě pomocíApplicationInsightsServiceOptions
:var builder = WebApplication.CreateBuilder(args); var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions(); aiOptions.EnableAdaptiveSampling = false; builder.Services.AddApplicationInsightsTelemetry(aiOptions); var app = builder.Build();
Povolení modulu vzorkování s pevnou rychlostí
Změny lze provést po
WebApplication.CreateBuilder()
metodě: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();
Konfigurace úprav vzorkování a vzorkování s pevnou frekvencí pro Java aplikace
Ve výchozím nastavení není v autoinstrumentaci Java a sadě SDK povolené žádné vzorkování. V současné době se podporuje automatické instrumentování v Javě, nástavby vzorkování a vzorkování s konstantní rychlostí. Adaptivní vzorkování není v Javě podporované.
Konfigurace automatické instrumentace Java
- Chcete-li nakonfigurovat přepsání vzorkování, která mění výchozí vzorkovací frekvenci a aplikují různé vzorkovací frekvence na vybrané požadavky a závislosti, použijte průvodce přepsáním vzorkování.
- Pokud chcete nakonfigurovat vzorkování s pevnou rychlostí, které platí pro veškerou vaši telemetrii, použijte průvodce vzorkováním s pevnou rychlostí.
Poznámka:
Pro procento vzorkování zvolte procento, které je blízko 100/N, kde N je celé číslo. Vzorkování v současné době 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, kdy se vzorkování nedá konfigurovat. Exportér metrik odešle veškerou telemetrii, kterou sleduje.
Vzorkování s pevnou rychlostí pro trasování
Do konfigurace sampler
můžete zadat Tracer
jako její součást. Pokud není k dispozici žádný explicitní sampler, použije se ProbabilitySampler
ve výchozím nastavení. Ve ProbabilitySampler
výchozím nastavení by se použila míra 1/10000, což znamená, že do Application Insights se odešle jeden z každých 10 000 požadavků. Pokud chcete zadat vzorkovací frekvenci, podívejte se na následující podrobnosti.
Pokud chcete určit vzorkovací frekvenci, ujistěte se, že váš Tracer
určuje sampler s frekvencí vzorkování v rozsahu od 0,0 do 1,0 včetně. Rychlost vzorkování 1,0 představuje 100 %, což znamená, že všechny vaše požadavky se odesílají jako telemetrická data do Application Insights.
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 dotazy se odesílají jako telemetrická data do Application Insights.
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 Application Insights. 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 Application Insights upravte fragment kódu JavaScriptu, který získáte z portálu Application Insights.
Návod
V ASP.NET aplikacích s zahrnutým JavaScriptem se fragment kódu obvykle používá _Layout.cshtml
.
Vložte čáru 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>
Pro procento vzorkování zvolte procento, které je blízko 100/N, kde N je celé číslo. Vzorkování v současné době 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 frekvencí pomocí SDK na straně serveru. Instrumentované stránky odesílají 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 jakékoli konkrétní položky telemetrie ve službě Application Insights najít všechny ostatní položky telemetrie pro tohoto uživatele nebo relaci. Dále můžete ve službě Search snadno přechá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 na serveru i klientovi povolili vzorkování.
- Zkontrolujte, že jste nastavili stejné procento vzorkování na straně klienta i serveru.
- Ujistěte se, že je verze sady SDK 2.0 nebo vyšší.
Vzorkování příjmu
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 Application Insights. I když nezmenšuje provoz telemetrie odesílaný z vaší aplikace, snižuje množství zpracovávané a uchovávané (a účtované) službou Application Insights.
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:
Stejně jako jiné typy vzorkování si algoritmus uchovává související položky telemetrie. Když například kontrolujete telemetrii ve službě Search, můžete najít požadavek související s konkrétní výjimkou. Počty metrik, jako je frekvence požadavků a rychlost výjimek, se správně uchovávají.
Vzorkování zahodí určité datové body a znepřístupní je ve všech funkcích Application Insights, jako například průběžný export.
Vzorkování při příjmu nefunguje společně s adaptivním vzorkováním ani s vzorkováním s pevnou rychlostí. Adaptivní vzorkování se automaticky aktivuje pomocí sady ASP.NET SDK, sady ASP.NET Core SDK, ve službě Aplikace Azure nebo pomocí agenta Application Insights. Když koncový bod služby Application Insights přijímá telemetrii a detekuje vzorkovací frekvenci nižší než 100 % (označující aktivní vzorkování), ignoruje jakoukoli nastavenou míru vzorkování příjmu dat.
Varová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ý druh vzorkování sady SDK (adaptivní vzorkování nebo vzorkování s pevnou rychlostí).
Jaký typ vzorkování mám použít?
Pokud chcete použít vzorkování příjmu dat:
- Č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 ASP.NET verze starší než 2.0.
Vzorkování s pevnou rychlostí použijte v následujících případech:
- K navigaci mezi souvisejícími událostmi potřebujete synchronizované vzorkování mezi klientem a serverem. Například zobrazení stránek a požadavky HTTP při hledání při vyšetřování událostí.
- Máte jistotu, že máte odpovídající procento vzorkování pro vaši aplikaci. Měla by být dostatečně vysoká, aby poskytla přesné metriky, ale zároveň nižší než úroveň, která překračuje vaši cenovou kvótu a limity omezení.
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í v sadě SDK pro ASP.NET/ASP.NET Core povoleno. Nezmenšuje návštěvnost, dokud není dosaženo určité minimální úrovně, proto se weby s nízkým využitím pravděpodobně vůbec nezahrnují do vzorkování.
Určení, jestli probíhá vzorkování
K vyhledání vzorkovací frekvence použijte dotaz Analytics.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Pokud se u nějakého typu zobrazí hodnota RetainedPercentage
nižší než 100, znamená to, že se daný typ telemetrie vzorkuje.
Důležité
Application Insights u žádné z technik vzorkování neprovádí vzorkování telemetrie relací, metrik (včetně vlastních metrik) ani čítačů výkonu. 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í.
Přesnost dotazů na protokoly a vysoké vzorkovací frekvence
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í prostředek ani nákladově efektivní. Application Insights používá vzorkování k přizpůsobení se rostoucímu objemu telemetrie flexibilním způsobem a k řízení využití prostředků a nákladů.
Varování
Integrita kompletního zobrazení distribuované operace může mít vliv na to, pokud některá aplikace v distribuované operaci zapnula vzorkování. 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.
S nárůstem míry vzorkování se přesnost dotazů založených na protokolech sníží a nafoukne. Má vliv pouze na přesnost dotazů založených na protokolech, když je povolené vzorkování a vzorkovací frekvence jsou v vyšším rozsahu (přibližně 60 %). Dopad se liší v závislosti na typech telemetrie, počtech telemetrie na operaci a dalších faktorech.
Sady SDK používají předem agregované metriky k řešení problémů způsobených vzorkováním. Další informace o těchto metrikách najdete v tématu Azure Application Insights – Azure Monitor | Microsoft Docs. Sady SDK identifikují relevantní vlastnosti protokolovaných dat a extrahují statistiky před vzorkováním. Kvůli minimalizaci využití prostředků a nákladů se metriky agregují. Výsledkem tohoto procesu je několik položek telemetrie metrik za minutu místo tisíců položek telemetrie událostí. Například tyto metriky můžou hlásit "tato webová aplikace zpracovávala 25 požadavků" do účtu MDM s itemCount
100 v záznamu telemetrie odeslané žádosti. Tyto předem agregované metriky poskytují přesná čísla a jsou spolehlivé i v případě, že vzorkování ovlivňuje výsledky dotazů na základě protokolu. Můžete je zobrazit v podokně Metriky na portálu Application Insights.
Nejčastější dotazy
Má vzorkování vliv na přesnost upozorňování?
- Ano. Výstrahy se můžou aktivovat pouze při vzorkovaných datech. Agresivní filtrování může vést k tomu, že se upozornění neaktivují podle očekávání.
Poznámka:
Vzorkování se nevztahuje na metriky, ale metriky se dají odvodit z ukázkových dat. Tímto způsobem může vzorkování nepřímo ovlivnit přesnost upozorňování.
Jaké je výchozí chování vzorkování v sadách SDK ASP.NET a ASP.NET Core?
- Pokud používáte některou 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í systém přidá dva
AdaptiveSamplingTelemetryProcessor
uzly: jeden zahrnujeEvent
typ vzorkování, zatímco druhý ho vyloučí. Tato konfigurace omezuje telemetrii na pětEvent
položek typu a pět položek všech ostatních typů zkombinovaných a zajišťuje, žeEvents
se vzorkují odděleně od ostatních typů telemetrie.
Pomocí příkladů v předchozí části této stránky můžete toto výchozí chování změnit.
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í pro vzorkování při příjmu, které se nevztahuje na položky už vzorkované v samotné sadě SDK.
Proč není vzorkování jednoduchého "shromažďování X procent z každého typu telemetrie"?
- I když by tento přístup vzorkování poskytoval vysokou úroveň přesnosti v aproximaci metrik, přerušil by schopnost korelovat diagnostická data na uživatele, relaci a požadavek, což je pro diagnostiku důležité. Proto vzorkování 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í veškeré telemetrie pro X procent požadavků aplikace". U položek telemetrie, které nejsou přidružené k požadavkům (například asynchronní zpracování na pozadí), je náhradním typem shromažďování X procent všech položek pro každý typ telemetrie.
Může se procento vzorkování v průběhu času změnit?
- Ano, adaptivní vzorkování postupně mění procento vzorkování na základě aktuálně zjištěného objemu telemetrie.
Pokud používám vzorkování s pevnou rychlostí, jak zjistím, které procento vzorkování funguje nejlépe pro svou aplikaci?
Jedním ze způsobů je začít s adaptivním vzorkováním a zjistit, na jaké míře se ustálí (viz výše uvedená otázka), a poté pomocí této míry přepnout na vzorkování s pevnou rychlostí.
Jinak musíte hádat. Analyzujte aktuální využití telemetrie ve službě Application Insights, sledujte 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í navrhují, 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 objemu telemetrie ale může zneplatnit odhad.
Co se stane, když nakonfiguruji procento vzorkování tak, aby bylo příliš nízké?
- Příliš nízké procenta vzorkování způsobují příliš agresivní vzorkování a snižují přesnost aproximací, když se Application Insights pokusí kompenzovat vizualizaci dat s ohledem na snížení objemu dat. Může to mít také negativní dopad na vaše diagnostické zkušenosti, protože některé z zřídka selhávajících nebo pomalých požadavků je možné vyfiltrovat.
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í Application Insights můžou být vyšší, než jste plánovali kvůli poplatkům za nadlimitní využití.
Co se stane, když nakonfiguruji nastavení IncludedTypes i ExcludedTypes?
- Nejlepší je nenastavovat ani
ExcludedTypes
IncludedTypes
v konfiguraci, abyste zabránili konfliktům a zajistili jasné nastavení shromažďování telemetrie. - Typy telemetrie, které jsou uvedeny v
ExcludedTypes
seznamu, jsou vyloučeny i v případě, že jsou také nastaveny vIncludedTypes
nastavení. ExcludedTypes bude mít přednost před IncludedTypes.
Na jakých platformách můžu používat vzorkování?
- K automatickému odběru vzorků příchozích dat může dojít u jakékoli telemetrie nad určitým objemem, pokud SDK neprovádí vzorkování. Tato konfigurace by fungovala například v případě, že používáte starší verzi sady ASP.NET SDK nebo sady Java SDK.
- Pokud používáte aktuální ASP.NET nebo ASP.NET základní 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, nakonfigurovatApplicationInsights.xml
) zapnout vzorkování s pevnou rychlostí. Vzorkování je ve výchozím nastavení vypnuté. Při vzorkování s pevnou rychlostí se SDK prohlížeče a server automaticky synchronizují, aby zachytili související události.
Vždy chci vidět určité vzácné události. Jak je můžu dostat přes modul vzorkování?
Nejlepším způsobem, jak vždy zobrazit určité události, je napsat vlastní TelemetryInitializer, který u položky telemetrie, již chcete uchovat, nastaví hodnotu
SamplingPercentage
na 100, jak je znázorněno v následujícím příkladu. Inicializátory se zaručeně spustí před procesory telemetrie (včetně vzorkování), takže všechny techniky vzorkování tuto položku ignorují při svých úvahách. Vlastní inicializátory telemetrie jsou k dispozici v sadě ASP.NET SDK, sadě ASP.NET Core SDK, sadě JavaScript SDK a sadě Java SDK. Inicializátor telemetrie můžete například nakonfigurovat 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 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 funkcí sady SDK ve verzích ASP.NET od 2.0.0 a sady Java SDK verze 2.0.1 a vyšší.
Před verzí 2.5.0-beta2 sady ASP.NET SDK a v2.2.0-beta3 sady ASP.NET Core SDK se rozhodnutí vzorkování pro aplikace definující uživatele (například většina webových aplikací) spoléhala na hodnotu hash ID uživatele. U aplikací, které nedefinuje uživatele (například webové služby), vychází rozhodnutí o ID operace požadavku. Poslední verze sad SDK pro ASP.NET i ASP.NET Core teď k rozhodování o vzorkování používají ID operace.
Další kroky
- Filtrování může poskytovat přísnější kontrolu nad tím, co vaše sada SDK odesílá.
- Přečtěte si článek o optimalizaci telemetrie pomocí Application Insights v článku Vývojářská síť.