Vzorkování v Application Insights
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 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, budou normální, 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í.
Poznámka:
Následující dokumentace spoléhá na klasické rozhraní API Application Insights. Dlouhodobým plánem application Insights je shromažďovat data pomocí OpenTelemetry. Další informace najdete v tématu Povolení OpenTelemetry služby Azure Monitor pro aplikace .NET, Node.js, Python a Java a náš plán OpenTelemetry. Pokyny k migraci jsou k dispozici pro .NET, Node.js a Python.
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ě 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ů a kontrol stavu. Pomocí přepsání vzorkování vylaďte některé hlučné závislosti, zatímco například všechny důležité chyby se uchovávají 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 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 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í | Podporované vzorkování příjmu dat |
---|---|---|---|
ASP.NET | Ano (ve výchozím nastavení zapnuto) | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
ASP.NET Core | Ano (ve výchozím nastavení zapnuto) | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
Azure Functions | Ano (ve výchozím nastavení zapnuto) | No | Pouze pokud se neprojeví žádné jiné vzorkování |
Java | No | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
JavaScript | No | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
Node.JS | No | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
Python | No | Ano | Pouze pokud se neprojeví žádné jiné vzorkování |
Všichni ostatní | No | No | 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 na většině této stránky platí pro aktuální verze sad APPLICATION Insights SDK. 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á vysokou míru telemetrie, služba Application Insights zahodí datové body ("omezení"). Vzorkování snižuje pravděpodobnost, že u vaší aplikace dochází k omezování.
- Pokud chcete zachovat kvótu datových bodů pro cenovou úroveň.
- Pokud chcete snížit síťový provoz z kolekce telemetrie.
Jak funguje vzorkování
Algoritmus vzorkování rozhoduje, které položky telemetrie uchovává nebo klesá, ať už vzorkování provede sada 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 ukázka obsahuje neúspěšný požadavek, zachová všechny související položky telemetrie, jako jsou výjimky a trasová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í vzorkování tak, aby při hledání 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 Application Insights. Zahodí některá telemetrická data, která dorazí z vaší aplikace, s nastavenou vzorkovací rychlostí. 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 žádné jiné typy vzorkování.
Důležité
Pokud jsou pro typ telemetrie povolené adaptivní nebo pevné metody vzorkování rychlosti, vzorkování příjmu dat je pro tuto telemetrii zakázané. Typy telemetrie, které jsou vyloučené z vzorkování na úrovni sady SDK, se ale budou dál řídit vzorkováním příjmu dat 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.
Tip
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á.
Svazek se automaticky upraví tak, aby zůstal v rámci limitu MaxTelemetryItemsPerSecond
rychlosti. Pokud aplikace generuje nízkou telemetrii, například během ladění nebo nízkého využití, nezahodí položky, pokud svazek zůstane pod MaxTelemetryItemsPerSecond
. S nárůstem objemu telemetrie upraví vzorkovací frekvenci tak, aby dosáhl cílového svazku. 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 svazku 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 se kompenzuje vzorkovací frekvence, 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
uzlu 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 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. Tento interval můžete zkrátit, pokud vaše telemetrie odpovídá náhlému nárůstu.
<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, na které nechcete být vystaveni 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, na které chcete vzorkovat. 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 zakázat 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()
Program.cs
v souboru:
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 vlastnost nastavit aiOptions.EnableAdaptiveSampling
při false
volání 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í: Odeberte
ApplicationInsights.config
nebo okomentujteAdaptiveSamplingTelemetryProcessor
uzel.<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 VzorkováníPercentage 20, takže se vzorkuje 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 přepsání vzorkování a vzorkování s pevnou rychlostí pro aplikace v Javě
Ve výchozím nastavení není v autoinstrumentaci Java a sadě SDK povolené žádné vzorkování. V současné době se podporuje automatická registrace v Javě, přepsání vzorkování a vzorkování s pevnou rychlostí. Adaptivní vzorkování není v Javě podporované.
Konfigurace automatického vytváření Java
- Chcete-li 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 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í
Jako součást Tracer
konfigurace můžete zadatsampler
. 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 Tracer
se, že určuje vzorkovací vzorkovací frekvenci v rozsahu od 0,0 do 1,0 včetně. Vzorkovací frekvence 1,0 představuje 100 %, což znamená, že všechny vaše požadavky se odesílají jako telemetrie 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 požadavky se odesílají jako telemetrie 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.
Tip
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>
Poznámka:
Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.
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 rychlostí pomocí sady 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 a ve službě Search 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 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 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 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 v žádné funkci Application Insights, jako je průběžný export.
Vzorkování příjmu dat nefunguje společně s adaptivním ani 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.
Upozorňující
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?
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 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 získala 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. Nezmenšuje provoz, dokud nedosáhne určité minimální rychlosti, a proto se weby s nízkým využitím pravděpodobně vůbec nevybíjejí.
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ů.
Upozorňující
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 Aplikace Azure lication Insights – Azure Monitor | Microsoft Docs. Sady SDK před vzorkováním identifikují relevantní vlastnosti protokolovaných dat a extrahují statistiky. 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í i pro vzorkování příjmu dat, což u těchto položek, které jsou už vzorkované v samotné sadě SDK, nepoužívá vzorkování.
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ů, jak začít s adaptivním vzorkováním, zjistit, jaká míra se urovná (viz výše uvedená otázka), a pak 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é?
- Nadměrné procento vzorkování způsobuje nadměrné agresivní vzorkování a snižuje přesnost aproximací, když se Application Insights pokusí kompenzovat vizualizaci dat 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 vzorkování příjmu dat může dojít automaticky u jakékoli telemetrie nad určitým objemem, pokud sada 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 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ším způsobem, jak vždy zobrazit určité události, je napsat vlastní telemetriiInitializer, který nastaví
SamplingPercentage
na 100 u položky telemetrie, kterou chcete zachovat, jak je znázorněno v následujícím příkladu. Inicializátory jsou zaručeny, že se spustí před procesory telemetrie (včetně vzorkování), takže všechny techniky vzorkování tuto položku ignorují z 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. 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íť.