Я пытаюсь понять данные выборки. И нигде не могу найти точную формулировку. Иногда у меня просто нет всех журналов моего приложения в трассировках. Я решил регистрировать события только по мере необходимости, это нормально. Я не получаю никаких неожиданных данных в журнале.
Вот моя конфигурация:
services.AddLogging();
services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5, excludedTypes: "Request;Exception");
telemetryProcessorChainBuilder.Build();
});
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
В Azure для выборки установлено значение 100%.
А вот и следы журнала. Иногда я правильно регистрируюсь дважды, а иногда только один раз. Что тоже странно, но может иметь смысл, что иногда он просто регистрируется «медленнее».
А тут еще лог отслеживается в данную секунду.
Мой первый вопрос. Выборка - это настройка одинаковых сообщений? Или вообще для всех сообщений? Т.е. если я получу 5 сообщений с одинаковой формулировкой, я больше не отброшу, или если я получу 5 разных сообщений в секунду, я больше не отброшу? В зависимости от моей конфигурации.
Второй, более важный вопрос, исчезают ли мои следы из-за настройки выборки? Или что-то еще? Как следует настроить выборку, если из приложения выходят только те журналы, о которых я знаю? Выключить полностью? Или установить большее количество элементов?
Я прочитал документацию Microsoft, которая мне многое прояснила, но, к сожалению, она не совсем ясна.
Я читал статьи и обсуждения, но мало что нашел.
Ваши настройки означают:
Пример процессора телеметрии может выглядеть следующим образом (.NET 8.0):
public class LogOnlyTelemetryProcessor(ITelemetryProcessor next) : ITelemetryProcessor
{
public void Process(ITelemetry item)
{
// Only allow logs to be sent
if (item is TraceTelemetry)
{
this.Next.Process(item);
}
// Filter out other telemetry types
}
}
// in your program.cs or startup cs.:
services.Configure<TelemetryConfiguration>((config) =>
{
// Add the custom telemetry processor to the processor chain
var builder = config.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
builder.Use((next) => new LogOnlyTelemetryProcessor(next));
builder.Build();
});