Megosztás a következőn keresztül:


Mintavételezés az Application Insightsban

A mintavételezés az Application Insights egyik funkciója. Ez az ajánlott módszer a telemetriai forgalom, az adatköltségek és a tárolási költségek csökkentésére, miközben megőrzi az alkalmazásadatok statisztikailag helyes elemzését. A mintavételezés segít elkerülni, hogy az Application Insights szabályozza a telemetriát. A mintavételezési szűrő kiválasztja a kapcsolódó elemeket, így diagnosztikai vizsgálatok során navigálhat az elemek között.

Amikor a metrikák száma megjelenik a portálon, a rendszer újranormalizálja őket, hogy figyelembe vegye a mintavételezést. Ezzel minimálisra csökkenti a statisztikákra gyakorolt hatást.

Feljegyzés

Feljegyzés

Az alábbi dokumentáció a klasszikus Application Insights API-ra támaszkodik. Az Application Insights hosszú távú terve, hogy adatokat gyűjtsön az OpenTelemetry használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz.

Képernyőkép a mintavételezési konfigurációs beállításokról.

Rövid összefoglalás

  • A mintavételezésnek három típusát különböztetjük meg: adaptív mintavételezés, rögzített gyakoriságú mintavételezés és betöltési mintavételezés.
  • Az Adaptív mintavételezés alapértelmezés szerint engedélyezve van az Application Insights ASP.NET és ASP.NET Core Software Development Kits (SDK-k) és az Azure Functions legújabb verzióiban.
  • A rögzített gyakoriságú mintavételezés az Application Insights SDK-k legújabb verzióiban érhető el ASP.NET, ASP.NET Core, Java (mind az ügynök, mind az SDK), a JavaScript és a Python esetében.
  • A Java-ban a mintavételezési felülbírálások elérhetők, és akkor hasznosak, ha különböző mintavételezési arányokat kell alkalmaznia a kiválasztott függőségekre, kérelmekre és állapot-ellenőrzésekre. A mintavételezési felülbírálásokkal hangoljon ki néhány zajos függőséget, míg például az összes fontos hiba 100%-os marad. Ez a viselkedés a rögzített mintavételezés egy formája, amely részletes vezérlést biztosít a telemetriai adatok felett.
  • A betöltési mintavételezés az Application Insights szolgáltatás végpontján működik. Csak akkor működik, ha más mintavételezés nincs használatban. Ha az SDK mintát vesz a telemetriai adatokból, a betöltési mintavételezés le van tiltva.
  • Webalkalmazások esetében, ha egyéni eseményeket naplóz, és meg kell győződnie arról, hogy az események egy halmazát együtt őrzi meg vagy elveti, az eseményeknek ugyanazzal OperationId az értékkel kell rendelkezniük.
  • Ha Elemzési lekérdezéseket ír, vegye figyelembe a mintavételezést. Különösen a rekordok egyszerű számlálása helyett a következőt kell használnia summarize sum(itemCount):
  • Egyes telemetriai típusok, például a teljesítménymetrikák és az egyéni metrikák mindig megmaradnak, függetlenül attól, hogy engedélyezve van-e a mintavételezés.

Az alábbi táblázat összefoglalja az egyes SDK-khoz és alkalmazástípusokhoz elérhető mintavételezési típusokat:

Application Insights SDK Adaptív mintavételezés támogatott Rögzített gyakoriságú mintavételezés támogatott A betöltési mintavételezés támogatott
ASP.NET Igen (alapértelmezés szerint bekapcsolva) Igen Csak akkor, ha nincs más mintavételezés
ASP.NET Core Igen (alapértelmezés szerint bekapcsolva) Igen Csak akkor, ha nincs más mintavételezés
Azure Functions Igen (alapértelmezés szerint bekapcsolva) Nem Csak akkor, ha nincs más mintavételezés
Java Nem Igen Csak akkor, ha nincs más mintavételezés
JavaScript Nem Igen Csak akkor, ha nincs más mintavételezés
Node.JS Nem Igen Csak akkor, ha nincs más mintavételezés
Python Nem Igen Csak akkor, ha nincs más mintavételezés
Minden más Nem Nem Igen

Feljegyzés

  • A Java Application Agent 3.4.0-s és újabb verziói a sebességkorlátos mintavételezést használják alapértelmezettként, amikor telemetriát küldenek az Application Insightsnak. További információ: Sebességkorlátos mintavételezés.
  • A lap nagy részén található információk az Application Insights SDK-k aktuális verzióira vonatkoznak. Az SDK-k régebbi verzióiról további információt a régebbi SDK-verziókban talál.

Mikor érdemes mintavételezést használni?

A legtöbb kis- és közepes méretű alkalmazáshoz általában nincs szükség mintavételezésre. A leg hasznosabb diagnosztikai információk és a legpontosabb statisztikák az összes felhasználói tevékenység adatainak gyűjtésével érhetők el.

A mintavételezés fő előnyei a következők:

  • Az Application Insights szolgáltatás rövid időintervallumban nagy mennyiségű telemetriai adatpontot küld. A mintavételezés csökkenti annak a valószínűségét, hogy az alkalmazás szabályozást lát.
  • Ha a tarifacsomag adatpontjainak kvótáján belül szeretne maradni.
  • A telemetriai gyűjtemény hálózati forgalmának csökkentése.

A mintavételezés működése

A mintavételezési algoritmus dönti el, hogy mely telemetriai elemeket tárolja vagy dobja el, függetlenül attól, hogy az SDK vagy az Application Insights szolgáltatás végzi-e a mintavételezést. Szabályokat követ, hogy az összes összekapcsolt adatpont érintetlen maradjon, így az Application Insights még kevesebb adat mellett is használható és megbízható diagnosztikai élményt nyújt. Ha például egy minta sikertelen kérést tartalmaz, az megőrzi az összes kapcsolódó telemetriai elemet, például a kivételeket és a nyomkövetéseket. Így, amikor megtekinti a kérelmek részleteit az Application Insightsban, mindig megjelenik a kérés és a hozzá tartozó telemetriai adatok.

A mintavételezési döntés a kérelem műveleti azonosítóján alapul, ami azt jelenti, hogy egy adott művelethez tartozó összes telemetriai elem megmarad vagy elvet. A műveletazonosítóval nem rendelkező telemetriai elemek (például a HTTP-környezet nélküli aszinkron szálakról jelentett telemetriai elemek) esetében a mintavételezés egyszerűen rögzíti az egyes típusú telemetriai elemek százalékos arányát.

A telemetriai adatok visszaadásakor az Application Insights szolgáltatás a hiányzó adatpontok kompenzálása érdekében a metrikákat ugyanazzal a mintavételezési százalékkal módosítja, mint amelyet a gyűjtéskor használtak. Ezért az Application Insights telemetriai adatainak megtekintésekor a felhasználók statisztikailag helyes közelítéseket láthatnak, amelyek közel állnak a valós számokhoz.

A közelítés pontossága nagyban függ a konfigurált mintavételezési százaléktól. Emellett a pontosság nő az olyan alkalmazások esetében is, amelyek sok felhasználótól érkező, nagy mennyiségű hasonló kérést kezelnek. Másrészt az olyan alkalmazások esetében, amelyek nem működnek jelentős terheléssel, nincs szükség mintavételezésre, mivel ezek az alkalmazások általában az összes telemetriát elküldhetik, miközben a kvótán belül maradnak, anélkül, hogy adatvesztést okozna a szabályozás miatt.

Mintavételezési típusok

Három különböző mintavételi módszer létezik:

  • Az adaptív mintavételezés automatikusan módosítja a ASP.NET/ASP.NET Core-alkalmazás SDK-jából és az Azure Functionsből küldött telemetriai adatokat. Ez az alapértelmezett mintavételezés a ASP.NET vagy ASP.NET Core SDK használatakor. Az adaptív mintavételezés jelenleg csak a ASP.NET/ASP.NET Core kiszolgálóoldali telemetriához és az Azure Functionshez érhető el.

  • A rögzített gyakoriságú mintavételezés csökkenti a ASP.NET vagy ASP.NET Core- vagy Java-kiszolgálóról, valamint a felhasználói böngészőkből küldött telemetriai adatok mennyiségét. Ön állítja be a mértéket. Az ügyfél és a kiszolgáló szinkronizálja a mintavételezést, így a Keresésben navigálhat a kapcsolódó oldalmegtekintések és kérések között.

  • A betöltési mintavételezés az Application Insights szolgáltatás végpontján történik. Elvet néhány, az alkalmazásból érkező telemetriát a beállított mintavételezési sebességgel. Nem csökkenti az alkalmazásból küldött telemetriai forgalmat, de segít a havi kvótán belül tartani. A betöltési mintavételezés fő előnye, hogy az alkalmazás ismételt üzembe helyezése nélkül is beállíthatja a mintavételezési sebességet. A betöltési mintavételezés minden kiszolgáló és ügyfél esetében egységesen működik, de más típusú mintavételezés esetén nem alkalmazható.

Fontos

Ha egy telemetriai típushoz engedélyezve van az adaptív vagy rögzített gyakoriságú mintavételezési módszer, a telemetriai adatok betöltési mintavételezése le van tiltva. Az SDK szintjén a mintavételezésből kizárt telemetriai típusokat azonban továbbra is betöltési mintavételezésnek vetjük alá a portálon beállított sebességgel.

Adaptív mintavételezés

Az adaptív mintavételezés hatással van a webkiszolgáló alkalmazásból az Application Insights szolgáltatás végpontjára küldött telemetriai adatok mennyiségére.

Tipp.

Az adaptív mintavételezés alapértelmezés szerint engedélyezve van a ASP.NET SDK vagy a ASP.NET Core SDK használatakor, és alapértelmezés szerint az Azure Functions esetében is engedélyezve van.

A kötet automatikusan úgy módosul, hogy a MaxTelemetryItemsPerSecond sebességkorláton belül maradjon. Ha az alkalmazás alacsony telemetriát hoz létre, például hibakeresés vagy alacsony használat esetén, akkor az elemeket nem dobja el, amíg a kötet nem marad alatta MaxTelemetryItemsPerSecond. A telemetriai kötet növekedésével a mintavételezési arányt úgy állítja be, hogy elérje a célkötetet. Ez a rendszeres időközönként újraszámított kiigazítás a kimenő átviteli sebesség mozgó átlagán alapul.

A célkötet eléréséhez a rendszer elvet néhány generált telemetriát. Más típusú mintavételekhez hasonlóan azonban az algoritmus megtartja a kapcsolódó telemetriai elemeket. Ha például a keresésben vizsgálja meg a telemetriát, megtalálhatja az adott kivételhez kapcsolódó kérést.

A metrikák száma, például a kérelem sebessége és a kivételi arány a mintavételezési sebesség kompenzálása érdekében módosul, így hozzávetőleges értékeket jelenít meg a Metric Explorerben.

Adaptív mintavételezés konfigurálása ASP.NET alkalmazásokhoz

Feljegyzés

Ez a szakasz ASP.NET alkalmazásokra vonatkozik, nem pedig az ASP.NET Core-alkalmazásokra. A dokumentum későbbi részében megtudhatja, hogyan konfigurálhatja az adaptív mintavételezést ASP.NET Core-alkalmazásokhoz.

Ebben ApplicationInsights.configa fájlban több paramétert is beállíthat a AdaptiveSamplingTelemetryProcessor csomóponton. A megjelenített számok az alapértelmezett értékek:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Az adaptív algoritmus által az egyes kiszolgáló gazdagépeken gyűjtendő logikai műveletek célsebessége. Ha a webalkalmazás számos gazdagépen fut, csökkentse ezt az értéket, hogy a célforgalomon belül maradjon az Application Insights portálon.

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

    Az az intervallum, amelyen átértékeli a telemetriai adatok aktuális sebességét. A kiértékelés mozgóátlagként történik. Érdemes lehet lerövidíteni ezt az időközt, ha a telemetriai adatok hirtelen kipukkannak.

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

    A mintavételi százalékérték változásakor meghatározza, hogy milyen gyorsan csökkenthetjük újra a mintavételezési százalékot, hogy kevesebb adatot rögzítsünk.

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

    Ha a mintavételezési százalékérték megváltozik, az határozza meg, hogy mennyi idő múlva növelhetjük újra a mintavételezési százalékot, hogy több adatot rögzítsünk.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Mivel a mintavételezési százalék változó, mi az a minimális érték, amelyet beállíthatunk?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Mivel a mintavételezési százalék változó, mi a maximális érték, amelyet beállíthatunk?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    A mozgó átlag kiszámítása során ez az érték határozza meg a legutóbbi értékhez rendelendő súlyt. Használjon 1-nél egyenlő vagy kisebb értéket. A kisebb értékek kevésbé reaktívvá teszik az algoritmust a hirtelen változásokra.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    A minta telemetriájának mennyisége az alkalmazás indításakor. Hibakeresés közben ne csökkentse ezt az értéket.

  • <ExcludedTypes>type;type</ExcludedTypes>

    Azoknak a típusoknak a pontosvesszővel tagolt listája, amelyeket nem szeretne mintavételezésnek alávetni. A felismert típusok a következők: Dependency, Event, Exception, PageView, RequestTrace. A megadott típusok összes telemetriai adatátadása; a nem megadott típusok mintavételezettek.

  • <IncludedTypes>type;type</IncludedTypes>

    A mintavételezés tárgyát képező típusok pontosvesszővel tagolt listája. A felismert típusok a következők: Dependency, Event, Exception, PageView, RequestTrace. A megadott típusok mintavételezettek; a többi típus összes telemetriájának átvitele mindig történik.

Az adaptív mintavételezés kikapcsolásához távolítsa el a AdaptiveSamplingTelemetryProcessor csomópont(ok)t.ApplicationInsights.config

Alternatív megoldás: Adaptív mintavételezés konfigurálása kódban

A fájlban .config a mintavételezési paraméter beállítása helyett programozott módon állíthatja be ezeket az értékeket.

  1. Távolítsa el az AdaptiveSamplingTelemetryProcessor összes csomópontot a .config fájlból.

  2. Az adaptív mintavételezés konfigurálásához használja az alábbi kódrészletet:

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

    (Tudnivalók a telemetriai processzorokról.)

Az egyes telemetriai típusokhoz tartozó mintavételezési sebességet egyenként is módosíthatja, vagy kizárhat bizonyos típusokat a mintavételezésből:

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

Adaptív mintavételezés konfigurálása ASP.NET Core-alkalmazásokhoz

ASP.NET Core-alkalmazások kódban vagy fájlon appsettings.json keresztül konfigurálhatók. További információ: Konfiguráció a ASP.NET Core-ban.

Az adaptív mintavételezés alapértelmezés szerint engedélyezve van az összes ASP.NET Core-alkalmazáshoz. Letilthatja vagy testre szabhatja a mintavételezési viselkedést.

Adaptív mintavételezés kikapcsolása

Az alapértelmezett mintavételezési funkció le lehet tiltani az Application Insights szolgáltatás hozzáadásakor.

Hozzáadás ApplicationInsightsServiceOptions a WebApplication.CreateBuilder() fájlban lévő Program.cs metódus után:

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

A fenti kód letiltja az adaptív mintavételezést. A mintavételezés további testreszabási lehetőségekkel való hozzáadásához kövesse az alábbi lépéseket.

Mintavételezési beállítások konfigurálása

A mintavételezési viselkedés testreszabásához TelemetryProcessorChainBuilder használja az alábbi bővítménymetelyeket.

Fontos

Ha ezzel a módszerrel konfigurálja a mintavételezést, mindenképpen állítsa be a tulajdonságot false híváskor.aiOptions.EnableAdaptiveSamplingAddApplicationInsightsTelemetry() A módosítás elvégzése után pontosan az alábbi kódblokk utasításait kell követnie ahhoz, hogy újra engedélyezze az adaptív mintavételezést a testreszabásokkal. Ennek elmulasztása túlzott adatbetöltést eredményezhet. Mindig tesztelje a mintavételezési beállítások módosítása után, és állítson be egy megfelelő napi adatkorlátot a költségek szabályozásához.

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

Az egyéb mintavételezési beállításokat a SamplingPercentageEstimatorSettings osztály használatával szabhatja testre:

using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;

telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
     MinSamplingPercentage = 0.01,
     MaxSamplingPercentage = 100,
     MaxTelemetryItemsPerSecond = 5
 }, null, excludedTypes: "Dependency"); 

Adaptív mintavételezés konfigurálása az Azure Functionshez

Kövesse az oldal utasításait az Azure Functionsben futó alkalmazások adaptív mintavételezésének konfigurálásához.

Rögzített gyakoriságú mintavételezés

A rögzített gyakoriságú mintavételezés csökkenti a webkiszolgálóról és a webböngészőkből küldött forgalmat. Az adaptív mintavételezéstől eltérően az Ön által meghatározott rögzített sebességgel csökkenti a telemetriát. Rögzített gyakoriságú mintavételezés érhető el ASP.NET, ASP.NET Core, Java és Python-alkalmazásokhoz.

Más technikákhoz hasonlóan a kapcsolódó elemeket is megőrzi. Szinkronizálja az ügyfél és a kiszolgáló mintavételezését is, hogy a kapcsolódó elemek megmaradnak. Ha például megtekint egy lapnézetet a Keresésben, megtalálhatja a kapcsolódó kiszolgálói kéréseket.

A Metrics Explorerben az olyan arányok, mint a kérések és a kivételek száma megszorozva vannak egy tényezővel a mintavételezési sebesség kompenzálása érdekében, hogy a lehető legpontosabbak legyenek.

Rögzített sebességű mintavételezés konfigurálása ASP.NET alkalmazásokhoz

  1. Adaptív mintavételezés letiltása: A csomópont eltávolítása ApplicationInsights.configvagy megjegyzése AdaptiveSamplingTelemetryProcessor .

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Engedélyezze a rögzített sebességű mintavételezési modult. Adja hozzá ezt a kódrészletet a következőhöz ApplicationInsights.config:

    Ebben a példában a SamplingPercentage 20, tehát az összes elem 20%-a mintavételezésre kerül. A Metrikaböngésző értékeit a rendszer megszorozza (100/20) = 5 értékkel a kompenzálás érdekében.

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

    Másik lehetőségként a fájlban ApplicationInsights.config a mintavételezési paraméter beállítása helyett programozott módon állíthatja be ezeket az értékeket:

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

    (Tudnivalók a telemetriai processzorokról.)

Rögzített sebességű mintavételezés konfigurálása ASP.NET Core-alkalmazásokhoz

  1. Adaptív mintavételezés letiltása

    A metódus után a következővel ApplicationInsightsServiceOptionsmódosíthatók:WebApplication.CreateBuilder()

    var builder = WebApplication.CreateBuilder(args);
    
    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    builder.Services.AddApplicationInsightsTelemetry(aiOptions);
    
    var app = builder.Build();
    
  2. A rögzített sebességű mintavételezési modul engedélyezése

    A metódus után a következő módosításokat hajthatja végre WebApplication.CreateBuilder() :

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

Mintavételezési felülbírálások és rögzített sebességű mintavételezés konfigurálása Java-alkalmazásokhoz

Alapértelmezés szerint nincs engedélyezve mintavételezés a Java autoinstrumentációjában és az SDK-ban. Jelenleg a Java autoinstrumentációja, a mintavételezési felülbírálások és a rögzített gyakoriságú mintavételezés támogatott. A Java nem támogatja az adaptív mintavételezést.

Java autoinstrumentáció konfigurálása

  • Ha olyan mintavételezési felülbírálásokat szeretne konfigurálni, amelyek felülbírálják az alapértelmezett mintavételezési sebességet, és különböző mintavételezési arányokat alkalmaznak a kiválasztott kérelmekre és függőségekre, használja a mintavételezési felülbírálási útmutatót.
  • Az összes telemetriára érvényes rögzített gyakoriságú mintavételezés konfigurálásához használja a rögzített sebesség mintavételezési útmutatóját.

Feljegyzés

A mintavételi százalékértékhez válasszon egy 100/N-hez közeli százalékos értéket, ahol az N egész szám. A mintavételezés jelenleg nem támogat más értékeket.

Rögzített sebességű mintavételezés konfigurálása OpenCensus Python-alkalmazásokhoz

Az alkalmazást a legújabb OpenCensus Azure Monitor-exportőrökkel alakíthatja ki.

Feljegyzés

A rögzített gyakoriságú mintavételezés nem érhető el a metrikák exportőre számára. Ez azt jelenti, hogy az egyéni metrikák az egyetlen telemetriai típus, ahol a mintavételezés NEM konfigurálható. A metrikák exportőre minden olyan telemetriát elküld, amelyet nyomon követ.

Rögzített sebességű mintavételezés nyomkövetéshez

A konfiguráció részeként Tracer megadható.sampler Ha nincs megadva explicit mintavevő, a ProbabilitySampler rendszer alapértelmezés szerint ezt használja. A ProbabilitySampler rendszer alapértelmezés szerint 1/10000 arányt használ, ami azt jelenti, hogy minden 10 000 kérelemből egyet elküld az Application Insightsnak. Ha mintavételezési gyakoriságot szeretne megadni, tekintse meg az alábbi részleteket.

A mintavételezési sebesség megadásához győződjön meg arról, hogy a Tracer mintavételezési sebesség 0,0 és 1,0 között van. Az 1,0-s mintavételezési arány 100%-ot jelent, ami azt jelenti, hogy az összes kérés telemetriaként lesz elküldve az Application Insightsnak.

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

Rögzített gyakoriságú mintavételezés naplókhoz

A rögzített gyakoriságú mintavételezést AzureLogHandler az logging_sampling_rate opcionális argumentum módosításával konfigurálhatja. Ha nem ad meg argumentumot, a rendszer 1,0-s mintavételi arányt használ. Az 1,0-s mintavételezési arány 100%-ot jelent, ami azt jelenti, hogy az összes kérés telemetriaként lesz elküldve az Application Insightsnak.

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

Rögzített sebességű mintavételezés konfigurálása weblapokhoz JavaScript használatával

JavaScript-alapú weblapok konfigurálhatók az Application Insights használatára. A rendszer a felhasználó böngészőjében futó ügyfélalkalmazásból küld telemetriát, és a lapok bármely kiszolgálóról üzemeltethetők.

Ha JavaScript-alapú weblapokat konfigurál az Application Insightshoz, módosítsa az Application Insights portálról kapott JavaScript-kódrészletet.

Tipp.

A JavaScriptet tartalmazó ASP.NET alkalmazásokban a kódrészlet általában bemegy._Layout.cshtml

Szúrjon be egy sort, mint samplingPercentage: 10, a rendszerállapot-kulcs előtt:

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

Feljegyzés

2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.

A mintavételi százalékértékhez válasszon egy 100/N-hez közeli százalékos értéket, ahol az N egész szám. A mintavételezés jelenleg nem támogat más értékeket.

Kiszolgálóoldali és ügyféloldali mintavételezés koordinálása

Az ügyféloldali JavaScript SDK a kiszolgálóoldali SDK-val rögzített gyakoriságú mintavételezésben vesz részt. A rendszerezett lapok csak ügyféloldali telemetriát küldenek ugyanabból a felhasználóból, amelyhez a kiszolgálóoldali SDK úgy döntött, hogy belefoglalja a mintavételezésbe. Ezt a logikát úgy tervezték, hogy fenntartsa a felhasználói munkamenetek integritását az ügyfél- és kiszolgálóoldali alkalmazásokban. Ennek eredményeképpen az Application Insights bármely telemetriaeleméből megtalálhatja a felhasználó vagy munkamenet összes többi telemetriai elemét, és a Keresésben navigálhat a kapcsolódó oldalmegtekintések és kérések között.

Ha az ügyfél- és kiszolgálóoldali telemetriai adatok nem jelenítik meg a koordinált mintákat:

  • Ellenőrizze, hogy engedélyezte-e a mintavételezést a kiszolgálón és az ügyfélen egyaránt.
  • Ellenőrizze, hogy ugyanazt a mintavételezési százalékot állította-e be az ügyfélben és a kiszolgálón is.
  • Győződjön meg arról, hogy az SDK-verzió 2.0-s vagy újabb.

Betöltési mintavételezés

A betöltési mintavételezés azon a ponton működik, ahol a webkiszolgáló, a böngészők és az eszközök telemetriai adatai elérik az Application Insights szolgáltatás végpontját. Bár nem csökkenti az alkalmazásból küldött telemetriai forgalmat, csökkenti az Application Insights által feldolgozott és megőrzött (és felszámított) összeget.

Ezt a mintavételezést akkor érdemes használni, ha az alkalmazás gyakran túllépi a havi kvótáját, és nem használhatja az SDK-alapú mintavételezés egyikét sem.

A mintavételezési sebesség beállítása a Használati és becsült költségek lapon:

Az alkalmazás Áttekintés paneljén válassza a Beállítások, a Kvóta, a Minták lehetőséget, majd a mintavételezési arányt, majd a Frissítés lehetőséget.

Más mintavételezési típusokhoz hasonlóan az algoritmus megtartja a kapcsolódó telemetriai elemeket. Ha például a keresésben vizsgálja meg a telemetriát, megtalálhatja az adott kivételhez kapcsolódó kérést. A metrikák száma, például a kérések sebessége és a kivételek aránya helyesen megmarad.

A mintavételezés elvet bizonyos adatpontokat, így azok nem érhetők el az Application Insights bármely funkciójában, például a folyamatos exportálásban.

A betöltési mintavételezés nem működik az adaptív vagy rögzített gyakoriságú mintavételezés mellett. Az adaptív mintavételezés automatikusan aktiválódik a ASP.NET SDK-val, a ASP.NET Core SDK-val, a Azure-alkalmazás Szolgáltatásban vagy az Application Insights-ügynökkel. Amikor az Application Insights szolgáltatásvégpont telemetriát kap, és 100% alatti mintavételezési sebességet észlel (aktív mintavételezést jelez), figyelmen kívül hagyja a betöltési mintavételezési sebességet.

Figyelmeztetés

A portál csempéjén látható érték a betöltési mintavételezéshez beállított értéket jelzi. Nem felel meg a tényleges mintavételezési sebességnek, ha bármilyen SDK-mintavételezés (adaptív vagy rögzített sebességű mintavételezés) működik.

Milyen mintavételi típust használjak?

Használjon betöltési mintavételt, ha:

  • Gyakran használja a havi telemetriai kvótát.
  • Túl sok telemetriát kap a felhasználók webböngészőiből.
  • Az SDK olyan verzióját használja, amely nem támogatja a mintavételezést – például ASP.NET 2.0-nál korábbi verziókat.

Használjon rögzített gyakoriságú mintavételezést, ha:

  • Szinkronizált mintavételezésre van szükség az ügyfél és a kiszolgáló között a kapcsolódó események közötti navigáláshoz. Az események vizsgálata során például lapmegtekintések és HTTP-kérések a Keresésben.
  • Biztos abban, hogy az alkalmazáshoz megfelelő mintavételezési százalékot ad meg. Elég magasnak kell lennie ahhoz, hogy pontos metrikákat kapjon, de a tarifakvótát és a szabályozási korlátokat meghaladó arány alatt kell lennie.

Adaptív mintavételezés használata:

Ha a mintavétel más formáinak használatára vonatkozó feltételek nem érvényesek, javasoljuk az adaptív mintavételezést. Ez a beállítás alapértelmezés szerint engedélyezve van a ASP.NET/ASP.NET Core SDK-ban. Ez nem csökkenti a forgalmat, amíg el nem éri a minimális mértéket, ezért az alacsony használatú webhelyek valószínűleg egyáltalán nem mintavételezhetők.

Annak ismerete, hogy a mintavétel működik-e

Elemzési lekérdezéssel megkeresheti a mintavételezési gyakoriságot.

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

Ha úgy látja, hogy a RetainedPercentage bármely típus esetében kisebb, mint 100, akkor az adott típusú telemetria mintavételezése folyamatban van.

Fontos

Az Application Insights a mintavételezési technikák egyikében sem mintavételezi a munkamenet, a metrikák (beleértve az egyéni metrikákat) vagy a teljesítményszámláló telemetriatípusait. Ezeket a típusokat mindig kizárjuk a mintavételezésből, mivel a pontosság csökkentése rendkívül nemkívánatos lehet ezekhez a telemetriai típusokhoz.

A naplólekérdezés pontossága és a magas mintavételezési gyakoriság

Ahogy az alkalmazás felskálázva van, másodpercenként több tucat, több száz vagy több ezer munkaelemet is feldolgozhat. Az események naplózása nem erőforrás és nem költséghatékony. Az Application Insights mintavételezéssel rugalmasan alkalmazkodik a növekvő telemetriai mennyiséghez, és szabályozza az erőforrás-használatot és a költségeket.

Figyelmeztetés

Az elosztott művelet végpontok közötti nézetének integritása akkor lehet hatással, ha az elosztott művelet bármely alkalmazása bekapcsolta a mintavételezést. Az egyes alkalmazások különböző mintavételezési döntéseket hoznak egy elosztott műveletben, így az egyik műveletazonosító telemetriáját egy alkalmazás mentheti, míg más alkalmazások dönthetnek úgy, hogy nem mintázják az adott műveletazonosító telemetriáját.

A mintavételezési sebesség növekedésével a naplóalapú lekérdezések pontossága csökken és növekszik. Ez csak akkor befolyásolja a naplóalapú lekérdezések pontosságát, ha a mintavételezés engedélyezve van, és a mintaarányok nagyobb tartományban vannak (~ 60%). A hatás a telemetriai típustól, a műveletenkénti telemetriai számoktól és egyéb tényezőktől függően változik.

Az SDK-k előre csoportosított metrikákat használnak a mintavételezés által okozott problémák megoldásához. További információ ezekről a metrikákról: Azure-alkalmazás Insights – Azure Monitor | Microsoft Docs. Az SDK-k azonosítják a naplózott adatok releváns tulajdonságait, és mintavétel előtt kinyerik a statisztikákat. Az erőforrás-használat és a költségek minimalizálása érdekében a metrikák összesítve jelennek meg. Ez a folyamat percenként néhány metrika telemetriaelemet eredményez, nem pedig több ezer eseménytelemetriaelemet. Ezek a metrikák például "ez a webalkalmazás 25 kérést feldolgozott" jelentést jelenthetnek az MDM-fióknak, itemCount az elküldött kérelem telemetriai rekordjában pedig 100-zal. Ezek az előre összeállított metrikák pontos számokat biztosítanak, és megbízhatóak akkor is, ha a mintavétel hatással van a naplóalapú lekérdezések eredményeire. Ezeket az Application Insights portál Metrikák paneljén tekintheti meg.

Gyakori kérdések

Befolyásolja a mintavételezés a riasztás pontosságát?

  • Igen. A riasztások csak mintavételezett adatok esetén aktiválhatók. Az agresszív szűrés azt eredményezheti, hogy a riasztások nem a várt módon aktiválódnak.

Feljegyzés

A mintavételezés nem vonatkozik a metrikákra, de a metrikák a mintavételezett adatokból származtathatók. Így a mintavételezés közvetetten befolyásolhatja a riasztás pontosságát.

Mi az alapértelmezett mintavételezési viselkedés a ASP.NET és ASP.NET Core SDK-kban?

  • Ha a fenti SDK egyik legújabb verzióját használja, az adaptív mintavételezés alapértelmezés szerint másodpercenként öt telemetriai elempel engedélyezve van. Alapértelmezés szerint a rendszer két AdaptiveSamplingTelemetryProcessor csomópontot ad hozzá: az egyik tartalmazza a Event mintavételezés típusát, a másik pedig kizárja. Ez a konfiguráció öt Event típuselemre és az összes többi típus öt elemére korlátozza a telemetriát, így biztosítva, hogy Events a mintavétel külön legyen a többi telemetriai típustól.

Az alapértelmezett viselkedés módosításához használja a lap korábbi szakaszában található példákat.

A telemetriai adatok mintavétele több alkalommal is végezhető el?

  • Szám A SamplingTelemetryProcessors figyelmen kívül hagyja a mintavételezési szempontok elemeit, ha az elem már mintavételezett. Ugyanez igaz a betöltési mintavételezésre is, amely nem alkalmaz mintavételezést azokra a tételekre, amelyek már mintául szolgálnak az SDK-ban.

Miért nem mintavételezés egy egyszerű "gyűjtse össze az egyes telemetriai típusok X százalékát"?

  • Bár ez a mintavételezési módszer magas szintű pontosságot biztosítana a metrikák közelítésében, az megszüntetné a diagnosztikai adatok felhasználónkénti, munkamenetenkénti és kérésenkénti korrelációjának képességét, ami a diagnosztika szempontjából kritikus fontosságú. Ezért a mintavételezés jobban működik az olyan szabályzatokkal, mint az "összes telemetriai elem összegyűjtése az alkalmazásfelhasználók X százalékához", vagy "az alkalmazáskérések X százalékához tartozó összes telemetriai adat összegyűjtése". A kérésekhez nem társított telemetriai elemek (például háttér-aszinkron feldolgozás) esetében a tartalék az, hogy "az egyes telemetriatípusokhoz tartozó összes elem X százalékát gyűjtse össze".

Változhat a mintavételezési százalék az idő függvényében?

  • Igen, az adaptív mintavételezés fokozatosan módosítja a mintavételezési százalékot a telemetria jelenleg megfigyelt mennyisége alapján.

Ha rögzített gyakoriságú mintavételezést használok, honnan tudhatom meg, hogy melyik mintavételezési százalék működik a legjobban az alkalmazásom számára?

  • Az egyik módszer az adaptív mintavételezés, annak kiderítése, hogy milyen arányban történik (lásd a fenti kérdést), majd váltson a rögzített sebességű mintavételezésre ezzel a sebességgel.

    Ellenkező esetben meg kell tippelned. Elemezze az Aktuális telemetriai használatot az Application Insightsban, figyelje meg az esetleges szabályozásokat, és becsülje meg az összegyűjtött telemetria mennyiségét. Ez a három bemenet a kiválasztott tarifacsomaggal együtt azt jelzi, hogy mennyivel csökkentheti az összegyűjtött telemetriai adatok mennyiségét. A felhasználók számának növekedése vagy a telemetriai adatok mennyiségének egyéb eltolódása azonban érvénytelenné teheti a becslést.

Mi történik, ha túl alacsonyra állítom be a mintavételezési százalékot?

  • A túlzottan alacsony mintavételezési százalékok túl agresszív mintavételezést okoznak, és csökkentik a közelítések pontosságát, amikor az Application Insights megpróbálja kompenzálni az adatok vizualizációját az adatmennyiség csökkentése érdekében. A diagnosztikai élményt is negatívan befolyásolhatja, mivel a ritkán sikertelen vagy lassú kérések némelyike mintavételezhető.

Mi történik, ha túl magasra állítom be a mintavételezési százalékot?

  • Ha túl magas mintavételi százalékot konfigurál (nem elég agresszív), akkor nem csökken a begyűjtött telemetriai adatok mennyisége. Továbbra is tapasztalhatja a szabályozással kapcsolatos telemetriai adatvesztést, és az Application Insights használatának költsége a túlhasználati díjak miatt magasabb lehet a tervezettnél.

Mi történik, ha a IncludedTypes és a ExcludedTypes beállítást is konfigurálom?

  • Az ütközések elkerülése és a telemetriagyűjtemények egyértelmű beállításainak biztosítása érdekében a legjobb, ha nem állítja be mind a konfigurációt, mind ExcludedTypesIncludedTypes a konfigurációban.
  • A felsorolt ExcludedTypes telemetriai típusok akkor sem lesznek kizárva, ha a beállításokban IncludedTypes is be vannak állítva. A kizárttípusok elsőbbséget élveznek a IncludedTypes típusokkal szemben.

Milyen platformokon használhatok mintavételezést?

  • Ha az SDK nem végez mintavételezést, a betöltési mintavételezés automatikusan történhet egy adott kötet fölötti telemetriai adatok esetében. Ez a konfiguráció például akkor működik, ha a ASP.NET SDK vagy a Java SDK régebbi verzióját használja.
  • Ha az aktuális ASP.NET vagy ASP.NET Core SDK-t (az Azure-ban vagy a saját kiszolgálóján üzemelteti), alapértelmezés szerint adaptív mintavételezést kap, de a korábban ismertetett rögzített sebességre válthat. Rögzített gyakoriságú mintavételezés esetén a böngésző SDK automatikusan szinkronizálja a mintával kapcsolatos eseményeket.
  • Ha az aktuális Java-ügynököt használja, konfigurálhatja applicationinsights.json (Java SDK esetén konfigurálhatja ApplicationInsights.xml) a rögzített sebességű mintavételezés bekapcsolását. A mintavételezés alapértelmezés szerint ki van kapcsolva. Rögzített sebességű mintavételezés esetén a böngésző SDK és a kiszolgáló automatikusan szinkronizálódik a mintával kapcsolatos eseményekhez.

Vannak bizonyos ritka események, amelyeket mindig látni akarok. Hogyan lehet átjutni a mintavételezési modulon?

  • Bizonyos események megtekintésének legjobb módja egy egyéni TelemetryInitializer írása, amely 100-ra állítja a SamplingPercentage megőrzendő telemetriai elemen az alábbi példában látható módon. Az inicializálók garantáltan a telemetriai processzorok előtt futnak (beleértve a mintavételezést is), így minden mintavételezési módszer figyelmen kívül hagyja ezt az elemet a mintavételezési szempontokból. Az egyéni telemetriai inicializálók a ASP.NET SDK-ban, a ASP.NET Core SDK-ban, a JavaScript SDK-ban és a Java SDK-ban érhetők el. Telemetria-inicializálót például a ASP.NET SDK használatával konfigurálhat:

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

Régebbi SDK-verziók

Adaptív mintavételezés érhető el az Application Insights SDK-hoz ASP.NET 2.0.0-beta3-s és újabb verziójához, a Microsoft.ApplicationInsights.AspNetCore SDK 2.2.0-beta1 és újabb verziójához, és alapértelmezés szerint engedélyezve van.

A rögzített gyakoriságú mintavételezés az SDK ASP.NET 2.0.0-s és Java SDK 2.0.1-es és újabb verzióiban.

A ASP.NET SDK 2.5.0-béta2-s és a ASP.NET Core SDK 2.2.0-béta3 verziójának bétaverziója előtt a felhasználót meghatározó alkalmazások mintavételezési döntései (a legtöbb webalkalmazáshoz hasonlóan) a felhasználói azonosító kivonatára támaszkodtak. A felhasználókat nem meghatározó alkalmazások (például webszolgáltatások) esetében a döntést a kérelem műveleti azonosítójára alapozta. A ASP.NET és a ASP.NET Core SDK-k legújabb verziói mostantól a műveletazonosítót használják mintavételezési döntésekhez.

Következő lépések