Application Insights пропуская события - PullRequest
0 голосов
/ 16 апреля 2019

Я использую этот код для отправки событий на понимание приложения в консольном приложении

        TelemetryConfiguration.Active.InstrumentationKey = "XXXXXXXXX";

        TelemetryClient telemetryClient = new TelemetryClient(); 

        for (int i = 0; i < 100; i++)
        {

            telemetryClient.TrackEvent("Hello World!");

            telemetryClient.TrackException(new OutOfMemoryException());
        }

        telemetryClient.Flush();
        Task.Delay(60000).Wait();

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

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

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

1 Ответ

1 голос
/ 17 апреля 2019

Без полного кода сложно сказать, какую конфигурацию использовать. Пару вещей, которые нужно искать:

  1. Вы включили выборку?Если вам действительно нужен точный подсчет событий, отключите выборку (https://docs.microsoft.com/en-us/azure/azure-monitor/app/sampling)
  2. . Вы настроили канал явно? Если нет, то по умолчанию будет InMemoryChannel, который не делает никаких повторных попыток при переходных процессах. Лучше всегоиспользуйте ServerTelemetryChannel, чтобы защитить потерю данных даже в случае проблем с сетью или из-за проблем с приложениями, связанных с переходными процессами.
var config = new TelemetryConfiguration(); // or active or create default...
var channel = new ServerTelemetryChannel();
channel.initialize(config)

// create client from the config.
TelemetryClient tc= new TelemetryClient(config);

...