Выборка в Application InsightsSampling in Application Insights

Выборка — это функция Azure Application Insights,Sampling is a feature in Azure Application Insights. Это рекомендуемый способ снизить объем данных телеметрии, затраты на данные и затраты на хранение, сохраняя статистически верный анализ данных приложения.It is the recommended way to reduce telemetry traffic, data costs, and storage costs, while preserving a statistically correct analysis of application data. Выборка также помогает избежать Application Insights регулирования телеметрии.Sampling also helps you avoid Application Insights throttling your telemetry. Фильтр выборки выбирает связанные элементы, чтобы можно было перемещаться между элементами при выполнении диагностического исследования.The sampling filter selects items that are related, so that you can navigate between items when you are doing diagnostic investigations.

Если счетчики метрик представлены на портале, они будут повторно нормализованы для использования выборки учетных записей.When metric counts are presented in the portal, they are renormalized to take into account sampling. Это снизит влияние на статистику.Doing so minimizes any effect on the statistics.

Краткая сводкаBrief summary

  • Существует три разных типа выборки: Адаптивная выборка, выборка с фиксированной частотой и выборка приема.There are three different types of sampling: adaptive sampling, fixed-rate sampling, and ingestion sampling.
  • Адаптивная выборка включена по умолчанию во всех последних версиях Application Insights ASP.NET и ASP.NET Core пакетах средств разработки программного обеспечения (SDK).Adaptive sampling is enabled by default in all the latest versions of the Application Insights ASP.NET and ASP.NET Core Software Development Kits (SDKs). Она также используется в функциях Azure.It is also used by Azure Functions.
  • Выборка с фиксированной частотой доступна в последних версиях Application Insights пакетов SDK для ASP.NET, ASP.NET Core, Java (агент и пакет SDK) и Python.Fixed-rate sampling is available in recent versions of the Application Insights SDKs for ASP.NET, ASP.NET Core, Java (both the agent and the SDK), and Python.
  • Выборка приема работает на конечной точке службы Application Insights.Ingestion sampling works on the Application Insights service endpoint. Он применяется только в том случае, если никакая другая выборка не действует.It only applies when no other sampling is in effect. Если пакет SDK производит выборку данных телеметрии, выборка приема отключена.If the SDK samples your telemetry, ingestion sampling is disabled.
  • Для веб-приложений, если вы зарегистрируете пользовательские события и хотите убедиться, что набор событий сохраняется или удаляется вместе, события должны иметь одно и то же OperationId значение.For web applications, if you log custom events and need to ensure that a set of events is retained or discarded together, the events must have the same OperationId value.
  • При написании запросов аналитики необходимо учитывать выборку.If you write Analytics queries, you should take account of sampling. В частности, вместо простого подсчета записей следует использовать функцию summarize sum(itemCount).In particular, instead of simply counting records, you should use summarize sum(itemCount).
  • Некоторые типы телеметрии, включая метрики производительности и пользовательские метрики, всегда сохраняются независимо от того, включена ли выборка.Some telemetry types, including performance metrics and custom metrics, are always kept regardless of whether sampling is enabled or not.

В следующей таблице перечислены типы выборок, доступные для каждого пакета SDK и типа приложения.The following table summarizes the sampling types available for each SDK and type of application:

Пакет SDK для Application InsightsApplication Insights SDK Поддерживается Адаптивная выборкаAdaptive sampling supported Поддерживается выборка с фиксированной частотойFixed-rate sampling supported Поддерживается выборка приемаIngestion sampling supported
ASP.NETASP.NET Да (включено по умолчанию)Yes (on by default) ДаYes Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
ASP.NET CoreASP.NET Core Да (включено по умолчанию)Yes (on by default) ДаYes Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
Функции AzureAzure Functions Да (включено по умолчанию)Yes (on by default) НетNo Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
JavaJava НетNo ДаYes Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
Node.JSNode.JS НетNo ДаYes Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
PythonPython НетNo ДаYes Только если не действует ни одна другая выборкаOnly if no other sampling is in effect
Все остальныеAll others НетNo НетNo ДаYes

Примечание

Сведения, приведенные на этой странице, относятся к текущим версиям пакетов SDK для Application Insights.The information on most of this page applies to the current versions of the Application Insights SDKs. Сведения о более ранних версиях пакетов SDK см. в разделе ниже.For information on older versions of the SDKs, see the section below.

Типы выборкиTypes of sampling

Существует три разных метода выборки:There are three different sampling methods:

  • Адаптивная выборка автоматически корректирует объем данных телеметрии, отправляемых из пакета SDK в приложении ASP.NET/ASP.NET Core, а также из функций Azure.Adaptive sampling automatically adjusts the volume of telemetry sent from the SDK in your ASP.NET/ASP.NET Core app, and from Azure Functions. Это выборка по умолчанию при использовании пакета SDK ASP.NET или ASP.NET Core.This is the default sampling when you use the ASP.NET or ASP.NET Core SDK. Адаптивная выборка сейчас доступна только для данных телеметрии на стороне сервера ASP.NET и для функций Azure.Adaptive sampling is currently only available for ASP.NET server-side telemetry, and for Azure Functions.

  • Выборка с фиксированной частотой сокращает объем данных телеметрии, отправляемых с сервера ASP.NET или ASP.NET Core или Java, а также из браузеров пользователей.Fixed-rate sampling reduces the volume of telemetry sent from both your ASP.NET or ASP.NET Core or Java server and from your users' browsers. Частоту вы задаете сами.You set the rate. Благодаря тому, что клиент и сервер будут синхронизировать свои выборки, при поиске вы сможете перемещаться между связанными представлениями страниц и запросами.The client and server will synchronize their sampling so that, in Search, you can navigate between related page views and requests.

  • Выборка приема происходит в конечной точке службы Application Insights.Ingestion sampling happens at the Application Insights service endpoint. отклоняет некоторые данные телеметрии, поступающие из приложения, с заданной скоростью выборки.It discards some of the telemetry that arrives from your app, at a sampling rate that you set. Выборка не сокращает трафик телеметрии, отправляемый из вашего приложения, но помогает оставаться в пределах месячной квоты.It doesn't reduce telemetry traffic sent from your app, but helps you keep within your monthly quota. Основное преимущество выборки приема заключается в том, что можно задать частоту выборки без повторного развертывания приложения.The main advantage of ingestion sampling is that you can set the sampling rate without redeploying your app. Выборка приема действует единообразно для всех серверов и клиентов, но она не применяется при выполнении любых других типов выборки.Ingestion sampling works uniformly for all servers and clients, but it does not apply when any other types of sampling are in operation.

Важно!

Если в операции используются адаптивные или фиксированные методы выборки частоты, выборка приема отключена.If adaptive or fixed rate sampling methods are in operation, ingestion sampling is disabled.

Адаптивная выборкаAdaptive sampling

Адаптивная выборка влияет на объем данных телеметрии, отправляемых в конечную точку службы Application Insights из приложения веб-сервера.Adaptive sampling affects the volume of telemetry sent from your web server app to the Application Insights service endpoint.

Совет

Адаптивная выборка включается по умолчанию при использовании пакета SDK для ASP.NET или пакета SDK для ASP.NET Core и также включается по умолчанию для функций Azure.Adaptive sampling is enabled by default when you use the ASP.NET SDK or the ASP.NET Core SDK, and is also enabled by default for Azure Functions.

Том корректируется автоматически, чтобы он оставался в пределах заданного максимального уровня трафика, и управляется с помощью параметра MaxTelemetryItemsPerSecond .The volume is adjusted automatically to keep within a specified maximum rate of traffic, and is controlled via the setting MaxTelemetryItemsPerSecond. Если приложение создает небольшой объем данных телеметрии, например при отладке или из-за низкого уровня использования, элементы не будут удаляться процессором выборки, пока используется том ниже MaxTelemetryItemsPerSecond .If the application produces a low amount of telemetry, such as when debugging or due to low usage, items won't be dropped by the sampling processor as long as volume is below MaxTelemetryItemsPerSecond. По мере увеличения объема данных телеметрии частота дискретизации корректируется, чтобы получить целевой том.As the volume of telemetry increases, the sampling rate is adjusted so as to achieve the target volume. Корректировка пересчитывается через регулярные интервалы времени в зависимости от скользящего среднего для скорости исходящей передачи.The adjustment is recalculated at regular intervals, and is based on a moving average of the outgoing transmission rate.

Для получения целевого объема некоторые формируемые данные телеметрии игнорируются.To achieve the target volume, some of the generated telemetry is discarded. Однако, как и в других типах выборки, алгоритм сохраняет связанные элементы телеметрии.But like other types of sampling, the algorithm retains related telemetry items. Например, при проверке телеметрии в поиске это позволит найти запрос, связанный с определенным исключением.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception.

Счетчики метрик, например частота запросов и частота исключений, корректируются с учетом частоты выборки, так что в обозревателе метрик отображаются приблизительно точные значения.Metric counts such as request rate and exception rate are adjusted to compensate for the sampling rate, so that they show approximately correct values in Metric Explorer.

Настройка адаптивной выборки для приложений ASP.NETConfiguring adaptive sampling for ASP.NET applications

Примечание

Этот раздел относится к приложениям ASP.NET, а не ASP.NET Core приложениям.This section applies to ASP.NET applications, not to ASP.NET Core applications. Дополнительные сведения о настройке адаптивной выборки для ASP.NET Core приложений далее в этом документе.Learn about configuring adaptive sampling for ASP.NET Core applications later in this document.

В ApplicationInsights.config можно настроить несколько параметров в AdaptiveSamplingTelemetryProcessor узле.In ApplicationInsights.config, you can adjust several parameters in the AdaptiveSamplingTelemetryProcessor node. Ниже представлены значения по умолчанию.The figures shown are the default values:

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Целевая скорость логических операций , которую должен собираются адаптивный алгоритм для накопления на каждом узле сервера.The target rate of logical operations that the adaptive algorithm aims to collect on each server host. Если веб-приложение выполняется на множестве узлов, нужно уменьшить это значение, чтобы не превышать целевую скорость трафика на портале Application Insights.If your web app runs on many hosts, reduce this value so as to remain within your target rate of traffic at the Application Insights portal.

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

    Интервал повторного вычисления текущей скорости телеметрии.The interval at which the current rate of telemetry is reevaluated. Вычисление выполняется на основе скользящего среднего.Evaluation is performed as a moving average. Вы можете сократить этот интервал, если наблюдаете неожиданные скачки данных телеметрии в сторону увеличения.You might want to shorten this interval if your telemetry is liable to sudden bursts.

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

    Когда изменяется процент выборки, как только после этого можно будет уменьшить процент выборки для сбора меньшего объема данных?When sampling percentage value changes, how soon after are we allowed to lower the sampling percentage again to capture less data?

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

    Когда изменяется процент выборки, как только после этого можно будет увеличить процент выборки для сбора дополнительных данных?When sampling percentage value changes, how soon after are we allowed to increase the sampling percentage again to capture more data?

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Каково минимальное значение, которое может быть задано в процентах выборки?As sampling percentage varies, what is the minimum value we're allowed to set?

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Каково максимальное значение, которое может быть задано в процентах выборки?As sampling percentage varies, what is the maximum value we're allowed to set?

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    При вычислении скользящего среднего это указывает вес, который должен быть назначен последнему значению.In the calculation of the moving average, this specifies the weight that should be assigned to the most recent value. Используйте значение не больше 1.Use a value equal to or less than 1. Использование значений ниже рекомендуемых приводит к тому, что скорость реагирования алгоритма на резкие изменения замедляется.Smaller values make the algorithm less reactive to sudden changes.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    Объем данных телеметрии для выборки, когда приложение было только что запущено.The amount of telemetry to sample when the app has just started. Не уменьшайте это значение во время отладки.Don't reduce this value while you're debugging.

  • <ExcludedTypes>Trace;Exception</ExcludedTypes>

    Список типов, разделенных точкой с запятой, которые не должны подвергаться выборки.A semi-colon delimited list of types that you do not want to be subject to sampling. Распознаваемые типы: Dependency , Event , Exception , PageView , Request , Trace .Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. Передаются все данные телеметрии указанных типов. Выбор типов, которые не указаны, будет выполняться.All telemetry of the specified types is transmitted; the types that are not specified will be sampled.

  • <IncludedTypes>Request;Dependency</IncludedTypes>

    Разделенный точками с запятой список типов, для которых требуется выборка.A semi-colon delimited list of types that you do want to subject to sampling. Распознаваемые типы: Dependency , Event , Exception , PageView , Request , Trace .Recognized types are: Dependency, Event, Exception, PageView, Request, Trace. Указанные типы будут выдаваться по образцу. все данные телеметрии других типов всегда будут передаваться.The specified types will be sampled; all telemetry of the other types will always be transmitted.

Чтобы отключить адаптивную выборку, удалите AdaptiveSamplingTelemetryProcessor узлы из ApplicationInsights.config .To switch off adaptive sampling, remove the AdaptiveSamplingTelemetryProcessor node(s) from ApplicationInsights.config.

Альтернатива: Настройка адаптивной выборки в кодеAlternative: Configure adaptive sampling in code

Вместо установки параметра выборки в .config файле можно программно задать эти значения.Instead of setting the sampling parameter in the .config file, you can programmatically set these values.

  1. Удалите AdaptiveSamplingTelemetryProcessor из файла все узлы .config .Remove all the AdaptiveSamplingTelemetryProcessor node(s) from the .config file.

  2. Чтобы настроить адаптивную выборку, используйте следующий фрагмент кода:Use the following snippet to configure adaptive sampling:

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

    (Сведения о процессорах телеметрии.)(Learn about telemetry processors.)

Можно также настроить частоту выборки для каждого типа телеметрии отдельно или даже исключить определенные типы из выборки.You can also adjust the sampling rate for each telemetry type individually, or can even exclude certain types from being sampled at all:

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

Настройка адаптивной выборки для приложений ASP.NET CoreConfiguring adaptive sampling for ASP.NET Core applications

ApplicationInsights.configДля ASP.NET Core приложений нет, поэтому все настройки выполняются с помощью кода.There is no ApplicationInsights.config for ASP.NET Core applications, so all configuration is done via code. Адаптивная выборка включена для всех приложений ASP.NET Core по умолчанию.Adaptive sampling is enabled by default for all ASP.NET Core applications. Вы можете отключить или настроить поведение выборки.You can disable or customize the sampling behavior.

Отключение адаптивной выборкиTurning off adaptive sampling

Функцию выборки по умолчанию можно отключить при добавлении службы Application Insights в методе ConfigureServices , используя ApplicationInsightsServiceOptions в Startup.cs файле:The default sampling feature can be disabled while adding Application Insights service, in the method ConfigureServices, using ApplicationInsightsServiceOptions within the Startup.cs file:

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

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

    //...
}

Приведенный выше код отключит адаптивную выборку.The above code will disable adaptive sampling. Чтобы добавить выборку с дополнительными параметрами настройки, выполните следующие действия.Follow the steps below to add sampling with more customization options.

Настройка параметров выборкиConfigure sampling settings

Чтобы настроить поведение выборки, используйте методы расширения TelemetryProcessorChainBuilder, как показано ниже.Use extension methods of TelemetryProcessorChainBuilder as shown below to customize sampling behavior.

Важно!

Если вы используете этот метод для настройки выборки, обязательно присвойте aiOptions.EnableAdaptiveSampling свойству значение false при вызове AddApplicationInsightsTelemetry() .If you use this method to configure sampling, please make sure to set the aiOptions.EnableAdaptiveSampling property to false when calling AddApplicationInsightsTelemetry().

using Microsoft.ApplicationInsights.Extensibility

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

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

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

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

    // ...
}

Настройка адаптивной выборки для функций AzureConfiguring adaptive sampling for Azure Functions

Следуйте инструкциям на этой странице , чтобы настроить адаптивную выборку для приложений, выполняющихся в функциях Azure.Follow instructions from this page to configure adaptive sampling for apps running in Azure Functions.

Выборка с фиксированной частотойFixed-rate sampling

Выборка с фиксированной частотой уменьшает трафик, отправляемый с веб-сервера и веб-браузеров.Fixed-rate sampling reduces the traffic sent from your web server and web browsers. В отличие от адаптивной выборки объем данных уменьшается в фиксированном, заданном вами размере.Unlike adaptive sampling, it reduces telemetry at a fixed rate decided by you. Выборка с фиксированной частотой доступна для приложений ASP.NET, ASP.NET Core, Java и Python.Fixed-rate sampling is available for ASP.NET, ASP.NET Core, Java and Python applications.

Как и другие методы выборки, это также позволяет хранить связанные элементы.Like other sampling techniques, this also retains related items. Он также синхронизирует выборку клиента и сервера, чтобы обеспечить сохранность связанных элементов. Например, при просмотре представления страницы в области поиска можно найти соответствующие запросы к серверу.It also synchronizes the client and server sampling so that related items are retained - for example, when you look at a page view in Search, you can find its related server requests.

В обозревателе метрик такие параметры, как счетчики запросов и исключений, умножаются на коэффициент, компенсирующий частоту выборки, что позволяет получать примерно точные значения.In Metrics Explorer, rates such as request and exception counts are multiplied by a factor to compensate for the sampling rate, so that they are approximately correct.

Настройка выборки с фиксированной частотой для приложений ASP.NETConfiguring fixed-rate sampling for ASP.NET applications

  1. Отключите адаптивную выборку: в ApplicationInsights.config , удалите или закомментируйте AdaptiveSamplingTelemetryProcessor узел.Disable adaptive sampling: In ApplicationInsights.config, remove or comment out the AdaptiveSamplingTelemetryProcessor node.

    <TelemetryProcessors>
        <!-- Disabled adaptive sampling:
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        </Add>
        -->
    
  2. Включите модуль выборки с фиксированной частотой.Enable the fixed-rate sampling module. Добавьте следующий фрагмент кода ApplicationInsights.config :Add this snippet to ApplicationInsights.config:

    <TelemetryProcessors>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.SamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
            <!-- Set a percentage close to 100/N where N is an integer. -->
            <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
            <SamplingPercentage>10</SamplingPercentage>
        </Add>
    </TelemetryProcessors>
    

    Кроме того, вместо настройки параметра выборки в ApplicationInsights.config файле можно программно задать следующие значения:Alternatively, instead of setting the sampling parameter in the ApplicationInsights.config file, you can programmatically set these values:

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

    (Сведения о процессорах телеметрии.)(Learn about telemetry processors.)

Настройка выборки с фиксированной частотой для приложений ASP.NET CoreConfiguring fixed-rate sampling for ASP.NET Core applications

  1. Отключить адаптивную выборку: изменения можно вносить в ConfigureServices метод с помощью ApplicationInsightsServiceOptions :Disable adaptive sampling: Changes can be made in the ConfigureServices method, using ApplicationInsightsServiceOptions:

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    
        var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
        aiOptions.EnableAdaptiveSampling = false;
        services.AddApplicationInsightsTelemetry(aiOptions);
    
        //...
    }
    
  2. Включите модуль выборки с фиксированной частотой.Enable the fixed-rate sampling module. Изменения можно вносить в метод, Configure как показано в следующем фрагменте кода:Changes can be made in the Configure method as shown in the below snippet:

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

Настройка выборки с фиксированной частотой для приложений JavaConfiguring fixed-rate sampling for Java applications

По умолчанию в агенте и пакете Java не включена выборка.By default no sampling is enabled in the Java agent and SDK. В настоящее время поддерживается только фиксированный выбор скорости.Currently it only supports fixed rate sampling. Адаптивная выборка не поддерживается в Java.Adaptive sampling is not supported in Java.

Настройка агента JavaConfiguring Java Agent

  1. Скачайте аппликатионинсигхтс-ажент-3.0.0-превиев. 5. jarDownload applicationinsights-agent-3.0.0-PREVIEW.5.jar

  2. Чтобы включить выборку, добавьте в ApplicationInsights.json файл следующее:To enable sampling add the following to your ApplicationInsights.json file:

{
  "instrumentationSettings": {
    "preview": {
      "sampling": {
        "fixedRate": {
          "percentage": 10 //this is just an example that shows you how to enable only only 10% of transaction 
        }
      }
    }
  }
}

Настройка пакета SDK для JavaConfiguring Java SDK

  1. Скачайте и настройте веб-приложение с помощью последнего пакета SDK для Application Insights Java.Download and configure your web application with the latest Application Insights Java SDK.

  2. Включите модуль выборки с фиксированной частотой , добавив следующий фрагмент кода в ApplicationInsights.xml файл:Enable the fixed-rate sampling module by adding the following snippet to ApplicationInsights.xml file:

    <TelemetryProcessors>
        <BuiltInProcessors>
            <Processor type="FixedRateSamplingTelemetryProcessor">
                <!-- Set a percentage close to 100/N where N is an integer. -->
                <!-- E.g. 50 (=100/2), 33.33 (=100/3), 25 (=100/4), 20, 1 (=100/100), 0.1 (=100/1000) -->
                <Add name="SamplingPercentage" value="50" />
            </Processor>
        </BuiltInProcessors>
    </TelemetryProcessors>
    
  3. Вы можете включить или исключить определенные типы данных телеметрии из выборки, используя следующие теги внутри Processor тега FixedRateSamplingTelemetryProcessor :You can include or exclude specific types of telemetry from sampling using the following tags inside the Processor tag's FixedRateSamplingTelemetryProcessor:

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

Типы телеметрии, которые можно включать в выборку или исключить из нее: Dependency , Event ,,, Exception PageView Request и Trace .The telemetry types that can be included or excluded from sampling are: Dependency, Event, Exception, PageView, Request, and Trace.

Примечание

В качестве процента выборки выберите значение в процентах, близкое к 100/N, где N — это целое число.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. В настоящее время выборка не поддерживает другие значения.Currently sampling doesn't support other values.

Настройка выборки с фиксированной частотой для приложений Python ОпенценсусConfiguring fixed-rate sampling for OpenCensus Python applications

Выполните инструментирование приложения с помощью последних средств экспорта опенценсус Azure Monitor.Instrument your application with the latest OpenCensus Azure Monitor exporters.

Примечание

Выборка с фиксированной частотой недоступна для программы экспорта метрик.Fixed-rate sampling is not available for the metrics exporter. Это означает, что пользовательские метрики являются единственными типами телеметрии, в которых невозможно настроить выборку.This means custom metrics are the only types of telemetry where sampling can NOT be configured. Средство экспорта метрик будет отсылать все данные телеметрии, которые он отслеживает.The metrics exporter will send all telemetry that it tracks.

Выборка с фиксированной частотой для трассировкиFixed-rate sampling for tracing

Вы можете указать sampler как часть конфигурации Tracer.You may specify a sampler as part of your Tracer configuration. Если явный выборка не предоставляется, по ProbabilitySampler умолчанию будет использоваться.If no explicit sampler is provided, the ProbabilitySampler will be used by default. По ProbabilitySampler умолчанию будет использоваться частота 1/10000, то есть все запросы 10000 будут отправляться в Application Insights.The ProbabilitySampler would use a rate of 1/10000 by default, meaning one out of every 10000 requests will be sent to Application Insights. Чтобы указать свою частоту выборки, см. ниже.If you want to specify a sampling rate, see below.

Чтобы указать частоту выборки, убедитесь, что вы Tracer указываете выборку с частотой дискретизации от 0,0 до 1,0 включительно.To specify the sampling rate, make sure your Tracer specifies a sampler with a sampling rate between 0.0 and 1.0 inclusive. Частота выборки 1,0 представляет 100%, то есть все запросы будут отправляться как данные телеметрии для Application Insights.A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

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

Выборка с фиксированной частотой для журналовFixed-rate sampling for logs

Можно настроить выборку с фиксированной частотой для AzureLogHandler , изменив logging_sampling_rate необязательный аргумент.You can configure fixed-rate sampling for AzureLogHandler by modifying the logging_sampling_rate optional argument. Если аргумент не указан, будет использоваться частота выборки, равная 1,0.If no argument is supplied, a sampling rate of 1.0 will be used. Частота выборки 1,0 представляет 100%, то есть все запросы будут отправляться как данные телеметрии для Application Insights.A sampling rate of 1.0 represents 100%, meaning all of your requests will be sent as telemetry to Application Insights.

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

Настройка выборки с фиксированной частотой для веб-страниц с помощью JavaScriptConfiguring fixed-rate sampling for web pages with JavaScript

Веб-страницы на основе JavaScript можно настроить для использования Application Insights.JavaScript-based web pages can be configured to use Application Insights. Данные телеметрии отправляются из клиентского приложения, работающего в браузере пользователя, и страницы могут размещаться с любого сервера.Telemetry is sent from the client application running within the user's browser, and the pages can be hosted from any server.

При настройке веб-страниц на основе JavaScript для Application Insightsизмените фрагмент кода JavaScript, полученный на портале Application Insights.When you configure your JavaScript-based web pages for Application Insights, modify the JavaScript snippet that you get from the Application Insights portal.

Совет

В приложениях ASP.NET с включением JavaScript фрагмент обычно находится в _Layout.cshtml .In ASP.NET apps with JavaScript included, the snippet typically goes in _Layout.cshtml.

Вставьте строку, похожую на samplingPercentage: 10,, перед ключом инструментирования:Insert a line like samplingPercentage: 10, before the instrumentation key:

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

В качестве процента выборки выберите значение в процентах, близкое к 100/N, где N — это целое число.For the sampling percentage, choose a percentage that is close to 100/N where N is an integer. В настоящее время выборка не поддерживает другие значения.Currently sampling doesn't support other values.

Координация выборки на стороне сервера и клиентаCoordinating server-side and client-side sampling

Клиентский пакет JavaScript на стороне клиента участвует в выборки с фиксированной частотой в сочетании с пакетом SDK на стороне сервера.The client-side JavaScript SDK participates in fixed-rate sampling in conjunction with the server-side SDK. Инструментированные страницы будут отсылать данные телеметрии на стороне клиента только от того же пользователя, для которого пакет SDK на стороне сервера принял решение включить в выборку.The instrumented pages will only send client-side telemetry from the same user for which the server-side SDK made its decision to include in the sampling. Эта логика предназначена для поддержания целостности пользовательских сеансов в клиентских и серверных приложениях.This logic is designed to maintain the integrity of user sessions across client- and server-side applications. В результате из любого конкретного элемента телеметрии в Application Insights можно найти все другие элементы телеметрии для этого пользователя или сеанса, а в поиске можно перемещаться между связанными представлениями страниц и запросами.As a result, from any particular telemetry item in Application Insights you can find all other telemetry items for this user or session and in Search, you can navigate between related page views and requests.

Если на клиенте и в телеметрии на стороне сервера не отображаются согласованные образцы:If your client and server-side telemetry don't show coordinated samples:

  • Убедитесь, что вы включили выборку как на сервере, так и на клиенте.Verify that you enabled sampling both on the server and client.
  • Проверьте, указан ли процент выборки на клиенте и сервере.Check that you set the same sampling percentage in both the client and server.
  • Убедитесь в том, что используется пакет SDK версии 2.0 или выше.Make sure that the SDK version is 2.0 or above.

Выборка приемаIngestion sampling

Выборка приема действует в тот момент, когда данные телеметрии веб-сервера, браузеров и устройств достигают конечной точки службы Application Insights.Ingestion sampling operates at the point where the telemetry from your web server, browsers, and devices reaches the Application Insights service endpoint. Несмотря на то, что трафик телеметрии, отправляемой из приложения, такая выборка не уменьшает, она сокращает объем данных для обработки и сохранения в службе Application Insights, а значит и размер оплаты.Although it doesn't reduce the telemetry traffic sent from your app, it does reduce the amount processed and retained (and charged for) by Application Insights.

Используйте этот тип выборки, если ваше приложение часто выходит за рамки ежемесячной квоты, а возможности использовать один из типов выборки на основе SDK нет.Use this type of sampling if your app often goes over its monthly quota and you don't have the option of using either of the SDK-based types of sampling.

Задайте частоту выборки на странице "Usage and estimated costs" (Данные об использовании и предполагаемые расходы).Set the sampling rate in the Usage and estimated costs page:

В колонке обзор приложения щелкните Параметры, квота, примеры, выберите частоту выборки и щелкните Обновить.

Как и в других типах выборки, алгоритм сохраняет связанные элементы телеметрии.Like other types of sampling, the algorithm retains related telemetry items. Например, при проверке телеметрии в поиске это позволит найти запрос, связанный с определенным исключением.For example, when you're inspecting the telemetry in Search, you'll be able to find the request related to a particular exception. Правильно сохраняются счетчики метрик, например частота запросов и частота исключений.Metric counts such as request rate and exception rate are correctly retained.

Точки данных, отклоненные выборкой, доступны не во всех функциях Application Insights, например Непрерывный экспорт.Data points that are discarded by sampling are not available in any Application Insights feature such as Continuous Export.

Выборка приема не работает во время выполнения адаптивной или фиксированной выборки.Ingestion sampling doesn't operate while adaptive or fixed-rate sampling is in operation. Адаптивная выборка включена по умолчанию при использовании пакета SDK ASP.NET или ASP.NET Core SDK или при включении Application Insights в службе приложений Azure или с помощью монитор состояния.Adaptive sampling is enabled by default when the ASP.NET SDK or the ASP.NET Core SDK is being used, or when Application Insights is enabled in Azure App Service or by using Status Monitor. Когда конечная точка службы Application Insights получает данные телеметрии, она проверяет данные телеметрии и, если частота выборки не превышает 100% (что означает, что выполняется выборка данных телеметрии), заданная скорость выборки игнорируется.When telemetry is received by the Application Insights service endpoint, it examines the telemetry and if the sampling rate is reported to be less than 100% (which indicates that telemetry is being sampled) then the ingestion sampling rate that you set is ignored.

Предупреждение

Значение, отображаемое на плитке портала, указывает значение, заданное для выборки приема.The value shown on the portal tile indicates the value that you set for ingestion sampling. Он не представляет фактическую частоту выборки, если выполняется операция выборки пакета SDK (с адаптивной или фиксированной частотой).It doesn't represent the actual sampling rate if any sort of SDK sampling (adaptive or fixed-rate sampling) is in operation.

Когда следует использовать выборкуWhen to use sampling

Как правило, для большинства приложений малого и среднего размера выборка не требуется.In general, for most small and medium size applications you don't need sampling. Наиболее полезные диагностические сведения и наиболее точную статистику можно получить, собирая данные обо всех действиях пользователей.The most useful diagnostic information and most accurate statistics are obtained by collecting data on all your user activities.

Основные преимущества выборки:The main advantages of sampling are:

  • Application Insights служба сбрасывает ("регулирует") точки данных, когда приложение отправляет очень высокую частоту телеметрии в течение короткого интервала времени.Application Insights service drops ("throttles") data points when your app sends a very high rate of telemetry in a short time interval. Выборка снижает вероятность того, что в приложении будет выполняться регулирование.Sampling reduces the likelihood that your application will see throttling occur.
  • Вы остаетесь в пределах квоты на точки данных для своей ценовой категории.To keep within the quota of data points for your pricing tier.
  • Вам нужно сократить сетевой трафик, который тратится на сбор данных телеметрии.To reduce network traffic from the collection of telemetry.

Какой тип выборки следует использовать?Which type of sampling should I use?

Используйте выборку приема, если:Use ingestion sampling if:

  • Вы часто используете месячную квоту телеметрии.You often use your monthly quota of telemetry.
  • Вы получаете слишком много данных телеметрии из веб-браузеров пользователей.You're getting too much telemetry from your users' web browsers.
  • Вы используете версию пакета SDK, которая не поддерживает выборки, например версию пакета для ASP.NET ниже 2.You're using a version of the SDK that doesn't support sampling - for example ASP.NET versions earlier than 2.

Используйте выборку с фиксированной частотой, если:Use fixed-rate sampling if:

  • Вы хотите синхронизировать выборку между клиентом и сервером, чтобы при исследовании событий в поискеможно было перемещаться между связанными событиями на стороне клиента и сервера, такими как Просмотры страниц и HTTP-запросы.You want synchronized sampling between client and server so that, when you're investigating events in Search, you can navigate between related events on the client and server, such as page views and HTTP requests.
  • Вам нужна уверенность в выборе соответствующего процента выборки для вашего приложения.You are confident of the appropriate sampling percentage for your app. Он должен быть достаточно высоким, чтобы получить точные метрики и при этом не превышать ценовую квоту и ограничения регулирования.It should be high enough to get accurate metrics, but below the rate that exceeds your pricing quota and the throttling limits.

Используйте адаптивную выборку:Use adaptive sampling:

Если условия для использования других форм выборки не применяются, мы рекомендуем адаптивную выборку.If the conditions to use the other forms of sampling do not apply, we recommend adaptive sampling. Этот параметр включен по умолчанию в пакете SDK для ASP.NET/ASP.NET Core.This setting is enabled by default in the ASP.NET/ASP.NET Core SDK. Он не уменьшает трафик до тех пор, пока не будет достигнута определенная минимальная скорость, поэтому узлы с низким уровнем использования, скорее всего, вообще не будут выдаваться.It will not reduce traffic until a certain minimum rate is reached, therefore low-use sites will probably not be sampled at all.

Определение наличия операции выборкиKnowing whether sampling is in operation

Чтобы узнать фактическую частоту выборки (где бы она ни применялась), выполните такой запрос аналитики :To discover the actual sampling rate no matter where it has been applied, use an Analytics query such as this:

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

Если вы видите, что RetainedPercentage для любого типа меньше 100, то этот тип телеметрии будет выборке.If you see that RetainedPercentage for any type is less than 100, then that type of telemetry is being sampled.

Важно!

В Application Insights не входит пример сеанса, метрики (включая пользовательские метрики) или типы телеметрии счетчиков производительности в любом из методов выборки.Application Insights does not sample session, metrics (including custom metrics), or performance counter telemetry types in any of the sampling techniques. Эти типы всегда исключаются из выборки, так как снижение точности может быть очень нежелательным для этих типов телеметрии.These types are always excluded from sampling as a reduction in precision can be highly undesirable for these telemetry types.

Принцип работы выборкиHow sampling works

Алгоритм выборки определяет, какие элементы телеметрии следует удалить, и какие из них следует удерживать.The sampling algorithm decides which telemetry items to drop, and which ones to keep. Это верно, если выборка выполняется пакетом SDK или в службе Application Insights.This is true whether sampling is done by the SDK or in the Application Insights service. Решение выборки основано на нескольких правилах, цель которых — сохранение всех точек взаимосвязанных данных без изменений, а также реализация функции диагностики в Application Insights даже с использованием сокращенного набора данных.The sampling decision is based on several rules that aim to preserve all interrelated data points intact, maintaining a diagnostic experience in Application Insights that is actionable and reliable even with a reduced data set. Например, если в приложении есть неудачный запрос, содержащийся в примере, дополнительные элементы телеметрии (например, исключения и трассировки, регистрируемые для этого запроса) будут сохранены.For example, if your app has a failed request included in a sample, the additional telemetry items (such as exception and traces logged for this request) will be retained. Выборка либо сохраняет, либо удаляет их вместе.Sampling either keeps or drops them all together. Поэтому при просмотре сведений о запросе в Application Insights вы всегда будете видеть запрос вместе со связанными элементами телеметрии.As a result, when you look at the request details in Application Insights, you can always see the request along with its associated telemetry items.

Решение выборки основывается на ИДЕНТИФИКАТОРе операции запроса. Это означает, что все элементы телеметрии, относящиеся к определенной операции, либо сохраняются, либо удаляются.The sampling decision is based on the operation ID of the request, which means that all telemetry items belonging to a particular operation is either preserved or dropped. Для элементов телеметрии, для которых не задан идентификатор операции (например, элементы телеметрии, отправленные из асинхронных потоков без контекста HTTP), просто захватывает процент элементов телеметрии каждого типа.For the telemetry items that do not have an operation ID set (such as telemetry items reported from asynchronous threads with no HTTP context) sampling simply captures a percentage of telemetry items of each type.

Представляя вам данные телеметрии, служба Application Insights корректирует метрики в соответствии с процентом выборки, который использовался во время сбора. Это делается, чтобы компенсировать отсутствующие точки данных.When presenting telemetry back to you, the Application Insights service adjusts the metrics by the same sampling percentage that was used at the time of collection, to compensate for the missing data points. Следовательно, при просмотре данных телеметрии в Application Insights пользователи видят статистически правильные приблизительные значения, очень близкие к реальным цифрам.Hence, when looking at the telemetry in Application Insights, the users are seeing statistically correct approximations that are very close to the real numbers.

Точность приблизительного значения в значительной степени зависит от заданного процента выборки.The accuracy of the approximation largely depends on the configured sampling percentage. Кроме того, точность возрастает для приложений, обрабатывающих большой объем сходных запросов от большого количества пользователей.Also, the accuracy increases for applications that handle a large volume of generally similar requests from lots of users. С другой стороны, для приложений, которые не работают с существенной нагрузкой, выборка не требуется, так как такие приложения обычно могут отправлять все данные телеметрии, не выходя за пределы квоты и не вызывая потерю данных в результате регулирования.On the other hand, for applications that don't work with a significant load, sampling is not needed as these applications can usually send all their telemetry while staying within the quota, without causing data loss from throttling.

Часто задаваемые вопросыFrequently asked questions

Что такое поведение выборки по умолчанию в пакетах SDK для ASP.NET и ASP.NET Core?What is the default sampling behavior in the ASP.NET and ASP.NET Core SDKs?

  • Если вы используете одну из последних версий указанного выше пакета SDK, Адаптивная выборка включается по умолчанию с пятью элементами телеметрии в секунду.If you are using one of the latest versions of the above SDK, Adaptive Sampling is enabled by default with five telemetry items per second. По AdaptiveSamplingTelemetryProcessor умолчанию добавлены два узла, а в Event другом — тип, а другой — Event тип из выборки.There are two AdaptiveSamplingTelemetryProcessor nodes added by default, and one includes the Event type in sampling, while the other excludes the Event type from sampling. Такая конфигурация означает, что пакет SDK будет пытаться ограничить элементы телеметрии до пяти элементов телеметрии Event типов и пять элементов телеметрии всех остальных типов, таким образом обеспечивая Events выборку отдельно от других типов телеметрии.This configuration means that the SDK will try to limit telemetry items to five telemetry items of Event types, and five telemetry items of all other types combined, thereby ensuring that Events are sampled separately from other telemetry types. События обычно используются для бизнес-телеметрии и, скорее всего, не должны быть затронуты томами телеметрии диагностики.Events are typically used for business telemetry, and most likely should not be affected by diagnostic telemetry volumes.

    Ниже показан созданный файл по умолчанию ApplicationInsights.config .The following shows the default ApplicationInsights.config file generated. В ASP.NET Core то же поведение по умолчанию включено в коде.In ASP.NET Core, the same default behavior is enabled in code. Используйте примеры из предыдущего раздела на этой странице , чтобы изменить это поведение по умолчанию.Use the examples in the earlier section of this page to change this default behavior.

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

Можно ли выполнить выборку данных телеметрии более одного раза?Can telemetry be sampled more than once?

  • Нет.No. Самплингтелеметрипроцессорс не учитывать элементы из соображений выборки, если элемент уже выбран.SamplingTelemetryProcessors ignore items from sampling considerations if the item is already sampled. То же самое справедливо и для выборки приема, что не будет применять выборку к этим элементам, уже выбранным в пакете SDK.The same is true for ingestion sampling as well, which won't apply sampling to those items already sampled in the SDK itself.

Почему выборка — это не простой сбор X процентов данных телеметрии каждого типа?Why isn't sampling a simple "collect X percent of each telemetry type"?

  • Хотя этот подход выборки обеспечивает высокий уровень точности в приближении метрик, он нарушает возможность корреляции диагностических данных для каждого пользователя, сеанса и запроса, что является критически важным для диагностики.While this sampling approach would provide with a high level of precision in metric approximations, it would break the ability to correlate diagnostic data per user, session, and request, which is critical for diagnostics. Таким образом, выборка работает лучше с политиками, такими как "сбор всех элементов телеметрии для X процентов пользователей приложений", или "сбор всех данных телеметрии для X% запросов приложений".Therefore, sampling works better with policies like "collect all telemetry items for X percent of app users", or "collect all telemetry for X percent of app requests". Для элементов телеметрии, не связанных с запросами (например, фоновой асинхронной обработкой), резервным вариантом является "сбор X процентов всех элементов для каждого типа телеметрии".For the telemetry items not associated with the requests (such as background asynchronous processing), the fallback is to "collect X percent of all items for each telemetry type."

Может ли процент выборки меняться со временем?Can the sampling percentage change over time?

  • Да, адаптивная выборка постепенно меняет процент выборки в зависимости от текущего объема данных телеметрии.Yes, adaptive sampling gradually changes the sampling percentage, based on the currently observed volume of the telemetry.

Если я использую выборку с фиксированной частотой, как узнать, какой процент выборки будет оптимальным для моего приложения?If I use fixed-rate sampling, how do I know which sampling percentage will work the best for my app?

  • Один из способов — начать с адаптивной выборки, узнать подобранную частоту (см. вопрос выше) и переключиться на выборку с этой фиксированной частотой.One way is to start with adaptive sampling, find out what rate it settles on (see the above question), and then switch to fixed-rate sampling using that rate.

    В противном случае придется только угадывать.Otherwise, you have to guess. Анализируйте текущее использование телеметрии в Application Insights, наблюдайте осуществляемое регулирование и оценивайте объем собранных данных телеметрии.Analyze your current telemetry usage in Application Insights, observe any throttling that is occurring, and estimate the volume of the collected telemetry. Эти три фактора в сочетании с выбранной ценовой категорией позволяют оценить объем собранных данных телеметрии, который может потребоваться сократить.These three inputs, together with your selected pricing tier, suggest how much you might want to reduce the volume of the collected telemetry. Однако увеличение числа пользователей или некоторые другие факторы, меняющие объем данных телеметрии, могут сделать оценку недействительной.However, an increase in the number of your users or some other shift in the volume of telemetry might invalidate your estimate.

Что произойдет, если задать слишком низкое значение в процентах выборки?What happens if I configure the sampling percentage to be too low?

  • Чрезмерно низкий процент выборки вызывает чрезмерно интенсивную выборку и снижает точность приближений при Application Insights попытках компенсировать визуализацию данных для уменьшения объема данных.Excessively low sampling percentages cause over-aggressive sampling, and reduce the accuracy of the approximations when Application Insights attempts to compensate the visualization of the data for the data volume reduction. Кроме того, вы можете негативно повлиять на вашу диагностику, так как некоторые из нечасто возникающих или нежелательных запросов могут быть взяты из строя.Also your diagnostic experience might be negatively impacted, as some of the infrequently failing or slow requests may be sampled out.

Что произойдет, если задать слишком высокое значение в процентах выборки?What happens if I configure the sampling percentage to be too high?

  • Настройка слишком большого процента выборки (недостаточно агрессивно) приводит к недостаточному снижению объема собранных данных телеметрии.Configuring too high a sampling percentage (not aggressive enough) results in an insufficient reduction in the volume of the collected telemetry. У вас по-прежнему может наблюдаться потеря данных телеметрии, связанная с регулированием, а затраты на использование Application Insights могут быть выше запланированных из-за избыточных расходов.You may still experience telemetry data loss related to throttling, and the cost of using Application Insights might be higher than you planned due to overage charges.

На каких платформах можно использовать выборку?On what platforms can I use sampling?

  • Выборка приема может выполняться автоматически, когда объем данных телеметрии превышает определенный порог, если пакет SDK не выполняет выборку.Ingestion sampling can occur automatically for any telemetry above a certain volume, if the SDK is not performing sampling. Такая конфигурация будет работать, например, при использовании более старой версии пакета SDK для ASP.NET или пакета SDK для Java.This configuration would work, for example, if you are using an older version of the ASP.NET SDK or Java SDK.
  • Если вы используете текущие пакеты SDK ASP.NET или ASP.NET Core (размещенные либо в Azure, либо на собственном сервере), вы получаете адаптивную выборку по умолчанию, но можно переключиться на фиксированную расставку, как описано выше.If you're using the current ASP.NET or ASP.NET Core SDKs (hosted either in Azure or on your own server), you get adaptive sampling by default, but you can switch to fixed-rate as described above. При выборке с фиксированной частотой пакет SDK браузера выполняет автоматическую синхронизацию с событиями, связанными с выборкой.With fixed-rate sampling, the browser SDK automatically synchronizes to sample related events.
  • Если вы используете текущий агент Java, можно настроить ApplicationInsights.json (для пакета SDK для Java, настроить ApplicationInsights.xml ) для включения выборки с фиксированной частотой.If you're using the current Java agent, you can configure ApplicationInsights.json (for Java SDK, configure ApplicationInsights.xml) to turn on fixed-rate sampling. По умолчанию выборка отключена.Sampling is turned off by default. При использовании выборки с фиксированной частотой пакет SDK браузера и сервер автоматически синхронизируются с образцом связанных событий.With fixed-rate sampling, the browser SDK and the server automatically synchronize to sample related events.

Есть определенные редкие события, которые я всегда хочу просматривать. Как сделать так, чтобы модуль выборки не отфильтровывал их?There are certain rare events I always want to see. How can I get them past the sampling module?

  • Лучший способ добиться этого — написать пользовательский TelemetryInitializer, который задает SamplingPercentage для элемента телеметрии значение 100, которое необходимо сохранить, как показано ниже.The best way to achieve this is to write a custom TelemetryInitializer, which sets the SamplingPercentage to 100 on the telemetry item you want retained, as shown below. Так как инициализаторы гарантированно выполняются до обработчиков данных телеметрии (включая выборку), это гарантирует, что все методы выборки будут игнорировать этот элемент из соображений выборки.As initializers are guaranteed to be run before telemetry processors (including sampling), this ensures that all sampling techniques will ignore this item from any sampling considerations. Пользовательские инициализаторы телеметрии доступны в пакете SDK для ASP.NET, ASP.NET Core пакете SDK, пакете SDK для JavaScript и пакете SDK для Java.Custom telemetry initializers are available in the ASP.NET SDK, the ASP.NET Core SDK, the JavaScript SDK, and the Java SDK. Например, можно настроить инициализатор телеметрии с помощью пакета SDK для ASP.NET:For example, you can configure a telemetry initializer using the ASP.NET SDK:

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

Более старые версии пакета SDKOlder SDK versions

Адаптивная выборка доступна для Application Insights пакета SDK для ASP.NET v 2.0.0-beta3 и более поздних версий, Microsoft. ApplicationInsights. AspNetCore SDK v 2.2.0-Beta1 и более поздних версий и включена по умолчанию.Adaptive sampling is available for the Application Insights SDK for ASP.NET v2.0.0-beta3 and later, Microsoft.ApplicationInsights.AspNetCore SDK v2.2.0-beta1 and later, and is enabled by default.

Выборка с фиксированной частотой — это функция пакета SDK в ASP.NET версий от 2.0.0 и Java SDK версии 2.0.1 и выше.Fixed-rate sampling is a feature of the SDK in ASP.NET versions from 2.0.0 and Java SDK version 2.0.1 and onwards.

До версии 2.5.0-2 пакета SDK ASP.NET и v 2.2.0-beta3 ASP.NET Core SDK решение выборки было основано на хэш-коде пользователя для приложений, определяющих "User" (то есть наиболее типичных веб-приложений).Prior to v2.5.0-beta2 of the ASP.NET SDK, and v2.2.0-beta3 of ASP.NET Core SDK, the sampling decision was based on the hash of the user ID for applications that define "user" (that is, most typical web applications). Для типов приложений, не определяющих пользователей (например, веб-служб), решение выборки было основано на ИДЕНТИФИКАТОРе операции запроса.For the types of applications that didn't define users (such as web services) the sampling decision was based on the operation ID of the request. Последние версии пакетов SDK для ASP.NET и ASP.NET Core используют идентификатор операции для решения выборки.Recent versions of the ASP.NET and ASP.NET Core SDKs use the operation ID for the sampling decision.

Дальнейшие действияNext steps