#azure #azure-application-insights
#azure #azure-application-insights
Вопрос:
Я использую этот код для отправки событий в Application insights в консольном приложении
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();
Теперь проблема, с которой я сталкиваюсь, заключается в том, что, похоже, не регистрируются все мои события, иногда на панели инструментов Visual Studio указано 44, иногда 68 и никогда 100.
Тип информации, которую я собираюсь отправить, важен, потому что я буду отслеживать несколько консольных приложений из этой службы .
Есть ли какой-либо способ заставить Application Insights отправлять все в Azure и не пропускать события? Я думаю, что даю ему достаточно времени, чтобы отправить все перед выходом.
Комментарии:
1. Здравствуйте, не могли бы вы предоставить полный код (удалить что-то конфиденциальное)?
2. теперь есть полный код, понятия не имею, как эти 2 строки будут иметь какое-либо значение.
Ответ №1:
Без полного кода трудно сказать, какая конфигурация использовалась.Несколько вещей, на которые нужно обратить внимание:
- Вы включили выборку? Если вам действительно нужно точное количество событий, отключите выборку (https://learn.microsoft.com/en-us/azure/azure-monitor/app/sampling )
- Вы явно настроили канал? В противном случае по умолчанию будет использоваться InMemoryChannel, который не выполняет никаких попыток для временных проблем. Лучше всего использовать ServerTelemetryChannel, чтобы защитить потерю данных даже в случае проблем с сетью или временных проблем с бэкендом Application insights.
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);
Комментарии:
1. полный код есть, честно говоря, ничего не пропало, кроме инициализации, поэтому я не включил это в первую очередь.
2. понял — значит, вы не включаете выборку, так что это не проблема. Но вам нужно сделать канал сервера, поскольку вы заботитесь о надежности событий.