Отправка пользовательской телеметрии в azure insights

#java #azure #azure-functions #azure-application-insights #telemetry

Вопрос:

У меня есть функция Java azure (среда выполнения 3.2.0), в которой я пытаюсь отправить некоторую пользовательскую телеметрию. Я использую следующий код

 TelemetryConfiguration config = TelemetryConfiguration.getActive()
TelemetryClient telemetry = new TelemetryClient(config);

telemetry.trackEvent("Test Event");
telemetry.trackTrace("Test Trace", SeverityLevel.Warning);

telemetry.flush(); // Not sure it is needed
 

Когда я проверяю config.getInstrumentationKey (), это правильный ключ для Application Insights, который я хочу показать пользовательской телеметрии. Однако я никогда не получаю настраиваемое событие и не отслеживаю его в своих выводах. Также config.isTrackingDisabled() i false и config.getChannel (), похоже, имеют смысл.

Все примеры кода, которые я нашел, а также в официальной документации, похоже, это весь код, который мне нужен. Когда я использую регистратор из журналов ExecutionContext, он появляется внутри приложения, поэтому моя функция имеет к нему доступ. Поэтому я подозреваю, что упустил какой-то небольшой важный факт или есть какая-то конфигурация моей функции, которая установлена неправильно.

Кто-нибудь может помочь мне настроить телеметрию для работы с моей функцией java?

Комментарии:

1. Попробуйте удалить телеметрию. флеш().

2. промывка-это асинхронная операция. Попробуйте подождать в коде 5 секунд после вызова flush , чтобы убедиться, что процесс получит достаточно времени для отправки данных.

3. @AliasCartellano в функциях azure вызов flush может быть здравым смыслом, поскольку в большинстве случаев функция существует сразу после выполнения кода.

4. Спасибо за ваши предложения. Я обнаружил, что, когда я запускаю свою функцию локально, она фактически отправляет всю мою пользовательскую телеметрию в мои данные о приложениях, когда я использую telemetryClient.getContext().setInstrumentationKey("APP INSIGHT INSTRUMENTATION KEY"); для жесткого кода ключ инструментария для анализа приложений, к которому я хочу подключиться, что показывает, что код работает. Однако, когда я запускаю свою функцию в azure (запускается триггером HTTP) Я не получаю никакой телеметрии. У кого-нибудь есть идеи, как это может произойти?

5. Есть ли у вас переменная среды (ключ инструментария или строка подключения), установленная в вашей функции Azure?