Поделиться через


Sampling in Application Insights (Выборка в Application Insights)

Выборка — это функция в Application Insights. Мы рекомендуем использовать ее для сокращения трафика телеметрии, а также затрат на данные и хранение. Эта функция также поддерживает статистически правильный анализ данных приложения. Кроме того, выборка помогает избежать регулирования телеметрии Application Insights. Фильтр выборки выбирает связанные элементы, позволяя переходить между ними во время диагностических исследований.

Когда счетчики метрик отображаются на портале, они ренормализованы для учета выборки. Это сведет к минимуму влияние на статистику.

Примечание.

  • Если вы приняли наш дистрибутив OpenTelemetry и ищете параметры конфигурации, см. статью "Включить выборку".

Примечание.

В следующей документации используется классический API Application Insights. Долгосрочный план Application Insights — сбор данных с помощью OpenTelemetry. Дополнительные сведения см. в статье "Включение Azure Monitor OpenTelemetry для .NET", Node.js, приложений Python и Java и нашей стратегии OpenTelemetry. Рекомендации по миграции доступны для .NET, Node.js и Python.

Снимок экрана: параметры конфигурации выборки.

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

  • Существует три разных типа выборки: адаптивная, с фиксированной частотой и при приеме.
  • Адаптивная выборка включена по умолчанию во всех последних версиях ASP.NET Application Insights и ASP.NET пакетах sdk core Software Development Kits (SDK) и Функции Azure.
  • Выборка фиксированной частоты доступна в последних версиях пакетов SDK Application Insights для ASP.NET, ASP.NET Core, Java (как агент, так и пакет SDK), JavaScript и Python.
  • В Java переопределения выборки доступны, и они полезны, если необходимо применить различные тарифы выборки к выбранным зависимостям, запросам и проверкам работоспособности. Используйте переопределения выборки для игнорирования некоторых шумных зависимостей, в то время как, например, все важные ошибки хранятся в объеме 100 %. Такое поведение — это форма фиксированной выборки, которая обеспечивает точный уровень контроля над данными телеметрии.
  • Выборка при приеме работает на конечной точке службы Application Insights. Он применяется только в том случае, если другие выборки не применяются. Если пакет SDK производит выборку данных телеметрии, выборка при приеме отключена.
  • Если вы регистрируете пользовательские события для веб-приложений и хотите, чтобы они сохранялись или удалялись одним набором, события должны иметь одно и то же значение OperationId.
  • При написании запросов аналитики необходимо учитывать выборку. В частности, вместо простого подсчета записей следует использовать функцию summarize sum(itemCount).
  • Некоторые типы данных телеметрии, включая метрики производительности и пользовательские метрики, всегда сохраняются независимо от того, включена ли выборка.

В следующей таблице вкратце описаны типы выборок, доступные для каждого пакета SDK и типа приложения.

Пакет SDK для Application Insights Поддерживается адаптивная выборка Поддерживается выборка с фиксированной частотой Поддерживается выборка при приеме
ASP.NET Да (включена по умолчанию) Да Только если не применяется ни одна другая выборка
ASP.NET Core Да (включена по умолчанию) Да Только если не применяется ни одна другая выборка
Функции Azure Да (включена по умолчанию) No Только если не применяется ни одна другая выборка
Java No Да Только если не применяется ни одна другая выборка
JavaScript No Да Только если не применяется ни одна другая выборка
Node.JS No Да Только если не применяется ни одна другая выборка
Python No Да Только если не применяется ни одна другая выборка
Все остальные No No Да

Примечание.

  • Агент приложений Java 3.4.0 и более поздних версий использует ограниченную скорость выборки в качестве значения по умолчанию при отправке данных телеметрии в Application Insights. Дополнительные сведения см. в разделе "Выборка с ограничением скорости".
  • Сведения, приведенные на этой странице, преимущественно относятся к текущим версиям пакетов SDK для Application Insights. Сведения о более старых версиях пакетов SDK см . в старых версиях пакета SDK.

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

В общем случае для большинства приложений малого и среднего размера выборка не требуется. Наиболее полезные диагностические сведения и наиболее точную статистику можно получить, собирая данные обо всех действиях пользователей.

Основные преимущества выборки:

  • Служба Application Insights удаляет точки данных ("регулирование") при отправке приложения высокой скорости телеметрии в короткий интервал времени. Выборка снижает вероятность того, что приложение видит регулирование.
  • Вы остаетесь в пределах квоты на точки данных для своей ценовой категории.
  • Вам нужно сократить сетевой трафик, который тратится на сбор данных телеметрии.

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

Алгоритм выборки определяет, какие элементы телеметрии он хранит или удаляет, независимо от того, выполняет ли служба SDK или Application Insights выборку. Он следует правилам, чтобы сохранить все взаимосвязанные точки данных без изменений, гарантируя, что Application Insights обеспечивает практический и надежный диагностический интерфейс, даже с меньшим количеством данных. Например, если пример содержит неудачный запрос, он сохраняет все связанные элементы телеметрии, такие как исключения и трассировки. Таким образом, при просмотре сведений о запросе в Application Insights всегда отображается запрос и связанная с ней телеметрия.

Решение выборки основано на идентификаторе операции запроса. Это означает, что все элементы телеметрии, относящиеся к определенной операции, либо сохраняются, либо удаляются. Для элементов телеметрии, не имеющих набора идентификаторов операции (например, элементов телеметрии, сообщаемых из асинхронных потоков без контекста HTTP), выборка просто фиксирует процент элементов телеметрии каждого типа.

Представляя вам данные телеметрии, служба Application Insights корректирует метрики в соответствии с процентом выборки, который использовался во время сбора. Это делается, чтобы компенсировать отсутствующие точки данных. Поэтому при просмотре телеметрии в Application Insights пользователи видят статистически правильные приближения, близкие к реальным числам.

Точность приблизительного значения в значительной степени зависит от заданного процента выборки. Кроме того, точность увеличивается для приложений, обрабатывающих большой объем аналогичных запросов от многих пользователей. С другой стороны, для приложений, которые не работают с значительной нагрузкой, выборка не требуется, так как эти приложения обычно могут отправлять все данные телеметрии во время пребывания в квоте, не вызывая потери данных от регулирования.

Типы выборки

Существует три различных метода выборки.

  • Адаптивная выборка автоматически корректирует объем данных телеметрии, отправляемых из пакета SDK в приложение ASP.NET или ASP.NET Core и из Функций Azure. Это выборка по умолчанию при использовании пакета SDK для ASP.NET или ASP.NET Core. Адаптивная выборка в настоящее время доступна только для телеметрии на стороне сервера ASP.NET/ASP.NET и для Функции Azure.

  • Выборка с фиксированной частотой уменьшает объем данных телеметрии, отправляемых с сервера ASP.NET, ASP.NET Core или Java и из браузеров пользователей. Частоту вы задаете сами. Клиент и сервер синхронизируют выборку, чтобы в поиске можно перемещаться между связанными представлениями страниц и запросами.

  • Выборка при приеме выполняется на конечной точке службы Application Insights. отклоняет некоторые данные телеметрии, поступающие из приложения, с заданной скоростью выборки. Выборка не сокращает трафик телеметрии, отправляемый из вашего приложения, но помогает оставаться в пределах месячной квоты. Основное преимущество выборки при приеме заключается в том, что можно задать частоту выборки без повторного развертывания приложения. Выборка при приеме действует единообразно для всех серверов и клиентов, но она не применяется при выполнении любых других типов выборки.

Внимание

Если для типа телеметрии включен адаптивный способ выборки или способ выборки с фиксированной частотой, выборка при приеме для этой телеметрии отключается. Однако для типов телеметрии, исключенных из выборки на уровне пакета SDK, выборки при приеме по-прежнему буде применяться с частотой, установленной на портале.

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

Адаптивная выборка влияет на объем данных телеметрии, отправляемых в конечную точку службы Application Insights из приложения веб-сервера.

Совет

Адаптивная выборка включается по умолчанию при использовании пакета SDK для ASP.NET или пакета SDK для ASP.NET Core, а также для Функций Azure.

Том автоматически корректируется, чтобы оставаться в пределах ограничения скорости MaxTelemetryItemsPerSecond . Если приложение создает низкую телеметрия, например при отладке или низком использовании, он не удаляет элементы до тех пор, пока том остается под MaxTelemetryItemsPerSecond. По мере увеличения тома телеметрии он настраивает частоту выборки для попадания в целевой том. Эта корректировка, пересчитываемая через регулярные интервалы, основана на скользящей средней скорости исходящей передачи.

Для получения целевого объема некоторые формируемые данные телеметрии игнорируются. Однако, как и в других типах выборки, алгоритм сохраняет связанные элементы телеметрии. Например, при проверке телеметрии в поиске можно найти запрос, связанный с определенным исключением.

Счетчики метрик, например частота запросов и частота исключений, корректируются с учетом частоты выборки, так что в обозревателе метрик отображаются приблизительные значения.

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

Примечание.

Этот раздел относится к приложениям ASP.NET, а не приложениям ASP.NET Core. Дополнительные сведения о настройке адаптивной выборки для приложений ASP.NET Core приведены далее в этом документе.

В файле ApplicationInsights.config можно настроить несколько параметров узла AdaptiveSamplingTelemetryProcessor. Ниже представлены значения по умолчанию.

  • <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>

    Целевая частота логических операций, данные о которых должны собираться адаптивным алгоритмом на каждом узле сервера. Если веб-приложение выполняется на множестве узлов, нужно уменьшить это значение, чтобы не превышать целевую скорость трафика на портале Application Insights.

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

    Интервал повторного вычисления текущей частоты телеметрии. Вычисление выполняется на основе скользящего среднего. Вы можете сократить этот интервал, если наблюдаете неожиданные скачки данных телеметрии в сторону увеличения.

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

    При изменении процентного значения выборки определяется, как быстро можно сократить процент выборки еще раз, чтобы получить меньше данных.

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

    При изменении процентного значения выборки он определяет, как скоро можно увеличить процент выборки еще раз, чтобы получить больше данных.

  • <MinSamplingPercentage>0.1</MinSamplingPercentage>

    Минимальное допустимое значение с учетом изменения процента выборки.

  • <MaxSamplingPercentage>100.0</MaxSamplingPercentage>

    Максимальное допустимое значение с учетом изменения процента выборки.

  • <MovingAverageRatio>0.25</MovingAverageRatio>

    При вычислении скользящего среднего это значение задает весовой коэффициент, который должен быть назначен последнему значению. Используйте значение не больше 1. Использование значений ниже рекомендуемых приводит к тому, что скорость реагирования алгоритма на резкие изменения замедляется.

  • <InitialSamplingPercentage>100</InitialSamplingPercentage>

    Объем данных телеметрии для примера при запуске приложения. Не снижайте это значение во время отладки.

  • <ExcludedTypes>type;type</ExcludedTypes>

    Записанный через точку с запятой список типов, к которым не должна применяться выборка. Распознаваемые типы: Dependency, Event, Exception, PageView, Request, Trace. Передается все данные телеметрии указанных типов; Примеры типов, которые не указаны.

  • <IncludedTypes>type;type</IncludedTypes>

    Записанный через точку с запятой список типов, к которым должна применяться выборка. Распознаваемые типы: Dependency, Event, Exception, PageView, Request, Trace. Примеры указанных типов; все данные телеметрии других типов всегда передаются.

Чтобы выключить адаптивную выбору, удалите узлы AdaptiveSamplingTelemetryProcessor из ApplicationInsights.config.

Альтернатива: настройка адаптивной выборки в коде

Вместо установки параметра выборки в файле .config можно задать эти значения программным способом.

  1. Удалите все узлы AdaptiveSamplingTelemetryProcessor из файла .config.

  2. Чтобы настроить адаптивную выборку, используйте следующий фрагмент кода:

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

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

Можно также настроить частоту выборки отдельно для каждого типа телеметрии или даже исключить определенные типы из выборки.

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

ASP.NET приложения Core можно настроить в коде appsettings.json или с помощью файла. Дополнительные сведения см. в разделе Конфигурация в ASP.NET Core.

Адаптивная выборка включена для всех приложений ASP.NET Core по умолчанию. Вы можете отключить или настроить поведение выборки.

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

Функция выборки по умолчанию может быть отключена при добавлении службы Application Insights.

Добавьте ApplicationInsightsServiceOptions после WebApplication.CreateBuilder() метода в Program.cs файле:

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

Приведенный выше код отключает адаптивную выборку. Выполните следующие действия, чтобы добавить выборку с дополнительными параметрами настройки.

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

Используйте следующие методы расширения для TelemetryProcessorChainBuilder настройки поведения выборки.

Внимание

Если вы используете этот метод для настройки выборки, обязательно присвойте свойству aiOptions.EnableAdaptiveSampling значение false при вызове AddApplicationInsightsTelemetry(). После внесения этого изменения необходимо следовать инструкциям в следующем блоке кода, чтобы повторно включить адаптивную выборку с помощью настроек. Несоблюдение этого требования может привести к чрезмерному приему данных. Всегда проверяйте параметры выборки после изменения и установите соответствующее ежедневное ограничение на объем данных, чтобы лучше контролировать затраты.

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

Другие параметры выборки можно настроить с помощью класса SamplingPercentageEstimatorSettings :

using Microsoft.ApplicationInsights.WindowsServer.Channel.Implementation;

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

Настройка адаптивной выборки для Функций Azure

Следуйте инструкциям на этой странице, чтобы настроить адаптивную выборку для приложений, выполняющихся в службе "Функции Azure".

Выборка с фиксированной частотой

Выборка с фиксированной частотой уменьшает объем трафика, отправляемого с веб-сервера и веб-браузеров. В отличие от адаптивной выборки объем данных уменьшается в фиксированном, заданном вами размере. Выборка с фиксированной частотой доступна для приложений ASP.NET, ASP.NET Core, Java и Python.

Как и другие методы, она также позволяет хранить связанные элементы. Выборки клиента и сервера синхронизируются, а связанные элементы сохраняются. Например, просматривая представление страницы в поиске, вы всегда сможете найти соответствующие ему запросы сервера.

В обозревателе метрик такие параметры, как счетчики запросов и исключений, умножаются на коэффициент, компенсирующий частоту выборки, что позволяет получать как можно более точные значения.

Настройка выборки с фиксированной частотой для приложений ASP.NET

  1. Отключите адаптивную выборку. В файле ApplicationInsights.config удалите или преобразуйте в комментарий узел AdaptiveSamplingTelemetryProcessor.

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

    В этом примере выборкаPercentage составляет 20, поэтому 20 % всех элементов будут выборки. Значения в обозревателе метрик умножаются на (100/20) = 5 для компенсации.

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

    Кроме того, вместо установки параметра выборки в файле ApplicationInsights.config можно задать эти значения программным способом:

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

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

Настройка выборки с фиксированной частотой для приложений ASP.NET Core

  1. Отключение адаптивной выборки

    Изменения можно вносить после WebApplication.CreateBuilder() метода с помощью ApplicationInsightsServiceOptions:

    var builder = WebApplication.CreateBuilder(args);
    
    var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    aiOptions.EnableAdaptiveSampling = false;
    builder.Services.AddApplicationInsightsTelemetry(aiOptions);
    
    var app = builder.Build();
    
  2. Включение модуля выборки фиксированной частоты

    Изменения можно вносить после 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(); 
    

Настройка переопределений выборки и выборки с фиксированной частотой для приложений Java

По умолчанию выборка не включена в автоинструментации Java и пакете SDK. В настоящее время поддерживаются автоинструментация Java, переопределение выборки и выборка фиксированной частоты. Адаптивная выборка в Java не поддерживается.

Настройка автоинструментации Java

Примечание.

В качестве процента выборки выберите значение в процентах, близкое к 100/N, где N — это целое число. В настоящее время выборка не поддерживает другие значения.

Настройка выборки с фиксированной частотой для приложений Python OpenCensus

Инструментируйте приложение с помощью новейших средств экспорта OpenCensus в Azure Monitor.

Примечание.

Выборка с фиксированной частотой недоступна для средств экспорта метрик. Это означает, что пользовательские метрики — это единственные типы телеметрии, для которых НЕЛЬЗЯ настроить выборку. Средство экспорта метрик будет отсылать все данные телеметрии, которые оно отслеживает.

Выборка с фиксированной частотой для трассировки

Можно указать sampler как часть Tracer конфигурации. Если явный пример не указан, ProbabilitySampler используется по умолчанию. По ProbabilitySampler умолчанию используется скорость 1/10000, то есть один из каждых 10 000 запросов отправляется в Application Insights. Если вы хотите указать частоту выборки, ознакомьтесь со следующими сведениями.

Чтобы задать частоту выборки, убедитесь, что Tracer задает средство выборки с частотой выборки от 0,0 до 1,0 включительно. Частота выборки 1.0 составляет 100%, что означает, что все ваши запросы отправляются в application Insights в виде телеметрии.

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

Выборка с фиксированной частотой для журналов

Можно настроить выборку с фиксированной частотой для AzureLogHandler, изменив необязательный аргумент logging_sampling_rate. Если аргумент не указан, используется частота выборки 1,0. Частота выборки 1.0 составляет 100%, что означает, что все ваши запросы отправляются как данные телеметрии в Application Insights.

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

Настройка выборки с фиксированной частотой для веб-страниц с JavaScript

Веб-страницы на основе JavaScript можно настроить для использования Application Insights. Данные телеметрии отправляются из клиентского приложения, работающего в браузере пользователя, а страницы могут размещаться с любого сервера.

При настройке веб-страниц на основе JavaScript для Application Insights измените фрагмент JavaScript, скачанный с портала Application Insights.

Совет

В приложениях ASP.NET с добавлением JavaScript этот фрагмент обычно находится в _Layout.cshtml.

Вставьте строку, похожую на samplingPercentage: 10,, перед ключом инструментирования:

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

Примечание.

Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.

В качестве процента выборки выберите значение в процентах, близкое к 100/N, где N — это целое число. В настоящее время выборка не поддерживает другие значения.

Координация выборки на стороне сервера и клиента

Пакет SDK для JavaScript на стороне клиента участвует в выборке с фиксированной частотой с использованием серверного пакета SDK. Инструментированные страницы отправляют данные телеметрии только на стороне клиента от того же пользователя, для которого серверный пакет SDK принял решение включить в выборку. Такая логика обеспечивает непрерывность сеанса пользователя как на клиентском, так и на серверном приложениях. В результате из любого конкретного элемента телеметрии в Application Insights можно найти все другие элементы телеметрии для этого пользователя или сеанса. При этом в области поиска можно перемещаться между связанными представлениями страниц и запросами.

Если в данных телеметрии на клиенте и сервере не отображаются скоординированные выборки, выполните следующие действия.

  • Убедитесь, что выборка с фиксированной частотой включена и на сервере, и в клиенте.
  • Проверьте, указан ли процент выборки на клиенте и сервере.
  • Убедитесь, что пакет SDK версии 2.0 или выше.

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

Выборка при приеме выполняется там, где данные телеметрии с веб-сервера, браузеров и устройств достигают конечной точки службы Application Insights. Несмотря на то, что трафик телеметрии, отправляемой из приложения, такая выборка не уменьшает, она сокращает объем данных для обработки и сохранения в службе Application Insights, а значит и размер оплаты.

Используйте этот тип выборки, если ваше приложение часто выходит за рамки ежемесячной квоты, а возможности использовать один из типов выборки на основе SDK нет.

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

На панели обзора приложения выберите

Как и в других типах выборки, алгоритм сохраняет связанные элементы телеметрии. Например, при проверке телеметрии в поиске можно найти запрос, связанный с определенным исключением. Правильно сохраняются счетчики метрик, например частота запросов и частота исключений.

Выборка удаляет определенные точки данных, что делает их недоступными в любой функции Application Insights, такой как непрерывный экспорт.

Выборка приема не работает вместе с адаптивной или фиксированной частотой выборки. Адаптивная выборка автоматически активируется с помощью пакета SDK ASP.NET, пакета SDK ASP.NET Core, в службе приложение Azure или агента Application Insights. Когда конечная точка службы Application Insights получает данные телеметрии и обнаруживает частоту выборки ниже 100 % (указывающая активную выборку), она игнорирует частоту выборки набора.

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

Значение, отображаемое на плитке портала, соответствует значению, которое вы задали для выборки при приеме. Оно не представляет фактическую частоту выборки, если выполняется операция выборки пакета SDK (адаптивная или с фиксированной частотой).

Какой тип выборки следует использовать?

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

  • Вы часто расходуете ежемесячную квоту телеметрии.
  • Вы получаете слишком много данных телеметрии с веб-браузеров пользователей.
  • Вы используете версию пакета SDK, которая не поддерживает выборку, например ASP.NET версии более 2.0.

Используйте выборку с фиксированной частотой, если:

  • Для перехода между связанными событиями требуется синхронизированная выборка между клиентом и сервером. Например, представления страниц и HTTP-запросы в поиске при изучении событий.
  • Вы уверены, что соответствующий процент выборки для вашего приложения. Он должен быть достаточно высоким, чтобы получить точные метрики и при этом не превышать ценовую квоту и ограничения регулирования.

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

Если условия использования других форм выборки не применяются, рекомендуется использовать адаптивную выборку. Этот параметр включен по умолчанию в пакете SDK для ASP.NET и ASP.NET Core. Он не уменьшает трафик до достижения определенной минимальной скорости, поэтому низкое использование сайтов, вероятно, не выборка вообще.

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

Используйте запрос аналитики для поиска частоты выборки.

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

Если вы видите, что RetainedPercentage для любого типа меньше 100, для этого типа телеметрии применяется выборка.

Внимание

В Application Insights выборка для таких типов телеметрии, как сеанс, метрики (включая пользовательские метрики) и счетчик производительности, не выполняется ни одним из методов. Эти типы телеметрии всегда исключаются из выборки, так как снижение точности может быть для них очень нежелательным.

Точность запросов к журналу и высокая скорость выборки

Так как приложение масштабируется, оно может обрабатывать десятки, сотни или тысячи рабочих элементов в секунду. Ведение журнала события для каждого из них не является ресурсом или экономически эффективным. Application Insights использует выборку для гибкой адаптации к растущему объему данных телеметрии, а также для контроля использования ресурсов и затрат.

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

Сквозная целостность представления распределенной операции может быть затронута, если какое-либо приложение в распределенной операции включило выборку. Каждое приложение в распределенной операции принимает разные решения выборки, поэтому данные телеметрии для одного идентификатора операции могут сохраняться одним приложением, в то время как другие приложения могут принять решение не выполнять выборку данных телеметрии для того же идентификатора операции.

По мере увеличения частоты выборки точность запросов на основе журналов уменьшается и увеличивается. Это влияет только на точность запросов на основе журналов, если выборка включена, и показатели выборки находятся в более высоком диапазоне (~ 60%). Влияние зависит от типов телеметрии, счетчиков телеметрии на операцию и других факторов.

Пакеты SDK используют предварительно подготовленные метрики для решения проблем, вызванных выборкой. Дополнительные сведения об этих метриках см. в статье приложение Azure Insights — Azure Monitor | Документация Майкрософт. Пакеты SDK определяют соответствующие свойства зарегистрированных данных и извлекают статистику перед выборкой. Чтобы свести к минимуму использование ресурсов и затраты, метрики агрегируются. Этот процесс приводит к нескольким элементам телеметрии метрик в минуту, а не тысячам элементов телеметрии событий. Например, эти метрики могут сообщать о том, что веб-приложение обрабатывает 25 запросов в учетную запись MDM с itemCount 100 в записи телеметрии отправленного запроса. Эти предварительно подготовленные метрики предоставляют точные числа и надежны, даже если выборка влияет на результаты запросов на основе журналов. Их можно просмотреть на панели метрик на портале Application Insights.

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

Влияет ли выборка на точность выдачи оповещений?

  • Да. Оповещения могут активироваться только для данных выборки. Агрессивная фильтрация может привести к тому, что оповещения не запускаются должным образом.

Примечание.

Выборка не применяется к метрикам, но метрики могут быть производными от данных выборки. Таким образом выборка может косвенно повлиять на точность выдачи оповещений.

Каково такое поведение выборки по умолчанию в пакетах SDK для ASP.NET и ASP.NET Core?

  • Если вы используете одну из последних версий приведенного выше пакета SDK, адаптивная выборка включена по умолчанию с пятью элементами телеметрии в секунду. По умолчанию система добавляет два AdaptiveSamplingTelemetryProcessor узла: один включает Event тип выборки, а другой исключает его. Эта конфигурация ограничивает данные телеметрии пятью элементами типа и пятью Event элементами всех остальных типов, обеспечивая выборку Events отдельно от других типов телеметрии.

Используйте примеры из предыдущего раздела на этой странице, чтобы изменить это поведение по умолчанию.

Можно ли выполнить выборку данных телеметрии несколько раз?

  • № Если элемент уже выбран SamplingTelemetryProcessors не учитывает его при формировании выборки. То же самое верно для приема выборки, а также, что не применяет выборку к тем элементам, которые уже были образцы в самом пакете SDK.

Почему выборка — это не простой сбор X процентов данных телеметрии каждого типа?

  • Хотя такой подход к выборке обеспечил бы высокий уровень точности в приблизительных значениях метрик, он не позволит сопоставлять диагностические данные для каждого пользователя, сеанса и запроса, что является критически важным для диагностики. Поэтому выборка лучше работает с политиками, такими как "сбор всех элементов телеметрии для пользователей приложения X" или "сбор всех данных телеметрии для X процентов запросов приложений". Для элементов телеметрии, не связанных с запросами (например, фоновая асинхронная обработка), резервным вариантом является "сбор X процентов всех элементов для каждого типа телеметрии".

Может ли процент выборки меняться со временем?

  • Да, адаптивная выборка постепенно меняет процент выборки в зависимости от текущего объема данных телеметрии.

Если я использую выборку с фиксированной частотой, то как узнать, какой процент выборки лучше всего подходит для приложения?

  • Один из способов — начать с адаптивной выборки, узнать подобранную частоту (см. вопрос выше) и переключиться на выборку с этой фиксированной частотой.

    В противном случае придется только угадывать. Анализируйте текущее использование телеметрии в Application Insights, наблюдайте осуществляемое регулирование и оценивайте объем собранных данных телеметрии. Эти три фактора в сочетании с выбранной ценовой категорией позволяют оценить объем собранных данных телеметрии, который может потребоваться сократить. Однако увеличение числа пользователей или некоторые другие факторы, меняющие объем данных телеметрии, могут сделать оценку недействительной.

Что произойдет, если настроить слишком низкий процент выборки?

  • Слишком низкий процент выборки, вызывающий излишне агрессивную выборку, снижает точность приблизительных значений, когда служба Application Insights пытается компенсировать отображение данных для сокращения объема данных. Кроме того, может негативно повлиять на работу диагностики, так как некоторые из редко завершающихся неудачных или медленных запросов могут быть извлечены.

Что произойдет, если настроить слишком высокий процент выборки?

  • Слишком высокий процент выборки (недостаточно агрессивная выборка) приводит к недостаточному снижению объема собранных данных телеметрии. Вы по-прежнему можете столкнуться с потерей данных телеметрии, связанной с регулированием, и стоимость использования Application Insights может быть выше, чем вы планировали из-за превышения расходов.

Что произойдет, если настроить параметры IncludedTypes и ExcludedTypes?

  • Рекомендуется не задавать ExcludedTypes IncludedTypes оба и в конфигурации, чтобы предотвратить конфликты и обеспечить четкие параметры сбора данных телеметрии.
  • Типы телеметрии, перечисленные в ExcludedTypes списке, исключаются, даже если они также заданы в IncludedTypes параметрах. Исключенные Типы будут иметь приоритет над ВключеннымиTypes.

На каких платформах можно использовать выборку?

  • Выборка приема может происходить автоматически для любой телеметрии над определенным томом, если пакет SDK не выполняет выборку. Эта конфигурация будет работать, например, если вы используете старую версию пакета SDK ASP.NET или пакета SDK для Java.
  • Если вы используете текущие пакеты SDK для ASP.NET или ASP.NET Core (размещенные в Azure или на собственном сервере), вы получите адаптивную выборку по умолчанию, но вы можете переключиться на фиксированный уровень, как описано ранее. При выборке с фиксированной частотой пакет SDK браузера выполняет автоматическую синхронизацию с событиями, связанными с выборкой.
  • Если вы используете текущий агент Java, можно настроить applicationinsights.json (для пакета SDK для Java, настройте ApplicationInsights.xml), чтобы включить выборку с фиксированной частотой. По умолчанию выборка отключена. При выборке с фиксированной частотой пакет SDK браузера и сервер выполняют автоматическую синхронизацию с событиями, связанными с выборкой.

Есть определенные редкие события, которые я всегда хочу просматривать. Как сделать так, чтобы модуль выборки не отфильтровывал их?

  • Лучший способ всегда видеть определенные события — написать пользовательский телеметрияInitializer, который задает SamplingPercentage значение 100 для элемента телеметрии, который требуется сохранить, как показано в следующем примере. Инициализаторы гарантированно выполняются до процессоров телеметрии (включая выборку), поэтому все методы выборки игнорируют этот элемент из любых соображений выборки. Пользовательские инициализаторы телеметрии доступны в пакетах SDK для ASP.NET, ASP.NET Core, JavaScript и Java. Например, можно настроить инициализатор телеметрии с помощью пакета SDK для ASP.NET:

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

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

Адаптивная выборка доступна в пакете SDK Application Insights для ASP.NET версии 2.0.0-beta3 или более поздней версии и пакета SDK для Microsoft.ApplicationInsights.AspNetCore версии 2.2.0-beta1 и включена по умолчанию.

Выборка с фиксированной частотой — это функция пакетов SDK для ASP.NET версии 2.0.0 и выше и пакетов SDK для Java версии 2.0.1 и выше.

До версии 2.5.0-beta2 пакета SDK ASP.NET и версии 2.2.0-beta3 пакета SDK ASP.NET Core решения выборки для приложений, определяющих "пользователя" (как и большинство веб-приложений), зависели от хэша идентификатора пользователя. Для приложений, не определяющих пользователей (таких как веб-службы), оно основано на решении по идентификатору операции запроса. Последние версии ASP.NET и ASP.NET основных пакетов SDK теперь используют идентификатор операции для принятия решений по выборке.

Следующие шаги