#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?