Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Выборка — это функция в Application Insights. Мы рекомендуем использовать ее для сокращения трафика телеметрии, а также затрат на данные и хранение. Эта функция также поддерживает статистически правильный анализ данных приложения. Выборка также помогает избежать ограничения телеметрических данных в Application Insights. Фильтр выборки выбирает связанные элементы, чтобы можно было перемещаться между элементами при выполнении диагностических исследований.
Когда счетчики метрик отображаются на портале, они ренормализованы для учета выборки. Это позволяет свести к минимуму любое влияние на статистику.
Примечание.
- Если вы приняли наш дистрибутив OpenTelemetry и ищете параметры конфигурации, см. статью "Включить выборку".
Краткая сводка
- Существует три разных типа выборки: адаптивная выборка, выборка с фиксированной частотой и приемная выборка.
- Адаптивная выборка включена по умолчанию во всех последних версиях ASP.NET Application Insights и ASP.NET пакетах средств разработки основных программ (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 | Да (по умолчанию) | нет | Только если не применяется ни одна другая выборка |
Ява | нет | Да | Только если не применяется ни одна другая выборка |
JavaScript | нет | Да | Только если не применяется ни одна другая выборка |
Node.JS | нет | Да | Только если не применяется ни одна другая выборка |
Питон | нет | Да | Только если не применяется ни одна другая выборка |
Все остальные | нет | нет | Да |
Примечание.
- Агент приложений 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 Core и для Azure Functions.
Выборка с фиксированной скоростью уменьшает объем данных телеметрии, отправляемый как из 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
можно задать эти значения программным способом.
Удалите все узлы
AdaptiveSamplingTelemetryProcessor
из файла.config
.Чтобы настроить адаптивную выборку, используйте следующий фрагмент кода:
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
Отключите адаптивную выборку: в
ApplicationInsights.config
, удалите или закомментируйтеAdaptiveSamplingTelemetryProcessor
узел.<TelemetryProcessors> <!-- Disabled adaptive sampling: <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel"> <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond> </Add> -->
Включите модуль выборки с фиксированной частотой. Добавьте следующий фрагмент кода в
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
Отключение адаптивной выборки
Изменения можно вносить после
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();
Включение модуля выборки фиксированной частоты
Изменения можно вносить после
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
Оснастите ваше приложение новейшими экспортерами Azure Monitor OpenCensus.
Примечание.
Выборка с фиксированной частотой недоступна для средств экспорта метрик. Это означает, что пользовательские метрики — это единственные типы телеметрии, для которых НЕЛЬЗЯ настроить выборку. Средство экспорта метрик будет отсылать все данные телеметрии, которые оно отслеживает.
Выборка с фиксированной частотой для трассировки
Можно указать 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>
В качестве процента выборки выберите значение в процентах, близкое к 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 Application 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
параметрах. Исключенные типы будут иметь приоритет над включенными типами.
На каких платформах можно использовать выборку?
- Автоматическая выборка данных приема может происходить для любой телеметрии, превышающей определенный объем, если SDK не выполняет выборку. Эта конфигурация будет работать, например, если вы используете старую версию пакета SDK ASP.NET или пакета SDK для Java.
- Если вы используете текущие пакеты SDK для ASP.NET или ASP.NET Core (размещенные в Azure или на собственном сервере), вы получите адаптивную выборку по умолчанию, но вы можете переключиться на фиксированный уровень, как описано ранее. При выборке с фиксированной частотой пакет SDK браузера выполняет автоматическую синхронизацию с событиями, связанными с выборкой.
- Если вы используете текущий агент Java, можно настроить
applicationinsights.json
(для пакета SDK для Java, настройтеApplicationInsights.xml
), чтобы включить выборку с фиксированной частотой. По умолчанию выборка отключена. При выборке с фиксированной частотой пакет SDK браузера и сервер выполняют автоматическую синхронизацию с событиями, связанными с выборкой.
Есть определенные редкие события, которые я всегда хочу просматривать. Как можно пропустить их через модуль выборки?
Лучший способ всегда видеть определенные события — написать пользовательский модуль инициализации телеметрии, который устанавливает значение 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 Core SDK теперь используют идентификатор операции для принятия решений по выборке.
Дальнейшие действия
- Фильтрация может обеспечить более строгий контроль над тем, что отправляет пакет SDK.
- Прочитайте статью в сети разработчиков Оптимизация телеметрии с помощью Application Insights.