Я настраиваю адаптивную выборку Azure App Insight в своем файле appsettings.json
на основе этой статьи. https://learn.microsoft.com/en-us/azure/azure-monitor/app/sampling-classic-api#configuring-adaptive-sampling-for-aspnet-applications
Мой appsettings.json
:
"ApplicationInsightsSamplingSettings": {
"InitialSamplingPercentage": 60.0,
"MinSamplingPercentage": 0.01,
"MaxSamplingPercentage": 60.0,
"MaxTelemetryItemsPerSecond": 5
},
Я знаю, что выборка включена, потому что я могу запросить журналы App Insight с помощью sum(itemCount)
, и это показывает более высокое значение, чем при использовании count()
.
dependencies
| summarize count() //sampled
dependencies
| summarize sum(itemCount) //Not sampled and will result in a higher number.
Так почему же портал Azure не отражает проценты моей выборки? Несмотря ни на что, выборка данных в разделе App Insights >> Использование и расчетные затраты >> Выборка данных всегда возвращает 100%.
Когда адаптивная выборка включена, она автоматически устанавливает процент выборки в Application Inisights=>Data Sampling
.
По моим наблюдениям, InitialSamplingPercentage
не отражается в Portal=>Application Insights=>Data Sampling, и процент выборки данных автоматически назначается в соответствии с выбранными данными.
Чтобы настроить InitialSamplingPercentage
вручную, отключите адаптивную выборку, добавив настройку:
{
"EnableAdaptiveSampling":false
}
Я протестировал то же самое с ASP.NET и ядром ASP.NET в своей среде, чтобы проверить, отражается ли процент выборки, настроенный вручную, на портале, но InitialSamplingPercentage не влияет на процент выборки данных на портале.
ASP.NET core:
var aiOptions = new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
EnableQuickPulseMetricStream = false,
};
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
telemetryProcessorChainBuilder.UseAdaptiveSampling(new SamplingPercentageEstimatorSettings
{
MaxSamplingPercentage=50,
MinSamplingPercentage=0.1,
InitialSamplingPercentage=0.1
}, null, excludedTypes: "");
telemetryProcessorChainBuilder.Build();
});
ASP.NET:
<TelemetryProcessors>
<Add Type = "Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector" />
<Add Type = "Microsoft.ApplicationInsights.Extensibility.AutocollectedMetricsExtractor, Microsoft.ApplicationInsights" />
<Add Type = "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
<ExcludedTypes>Event</ExcludedTypes>
<InitialSamplingPercentage>0.1</InitialSamplingPercentage>
</Add>
<Add Type = "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
<IncludedTypes>Event</IncludedTypes>
<InitialSamplingPercentage>0.1</InitialSamplingPercentage>
</Add>
</TelemetryProcessors>
запросы объединения, зависимости, просмотры страниц, тайминги браузера, исключения, трассировки
| где временная метка > назад (1 день)
| суммировать RetainedPercentage = 100/avg(itemCount) по bin(timestamp, 1h), itemType
Как упоминалось на предоставленном вами снимке экрана, если мы включаем выборку вручную с помощью кода или если включена адаптивная выборка, эти настройки применяются независимо от процента выборки, назначенного на портале.
Использованная литература:
Конфигурация выборки Azure Application Insight | от Чхави Гоэль
Благодарим за подтверждение того, что изменения кода не отражаются на портале. Однако это очень сбивает с толку, если кто-то не знал, что код/конфигурация изменила частоту дискретизации. Это нужно исправить.