Пользовательский Application Insight TelemetryInitializer с использованием функции Azure v2 - PullRequest
0 голосов
/ 29 января 2019

В функции Azure мы делаем несколько запросов, используя класс .NET HttpClient, Azure Servicebus SDK и Azure Storage SDK - все красиво регистрируется с помощью сборки в журнале Application Insight, показывая зависимости и все!

Теперь нам, однако, хотелось бы добавить реализацию ITelemetryInitializer, чтобы добавить несколько измерений в EventTelemetry, записываемый упомянутыми выше SDK.

Мы начнем с создания класса, реализующегоITelemetryInitializer interface.

public class ReferrerTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        if (telemetry is EventTelemetry)
        {
            // Add some code
        }
    }
}

Затем я создаю класс, реализующий интерфейс IWebJobsStartup, чтобы DI вводил мой инициализатор.

[assembly: WebJobsStartup(typeof(Startup))]

namespace LoggingTest
{
    public class Startup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder builder)
        {
            builder.Services.AddSingleton<ITelemetryInitializer, ReferrerTelemetryInitializer>();
        }
    }
}

Примечание. У меня только класс Startup, который запускается в .NET Core 2.0 (а не в 2.1) - хотя, похоже, это открытая известная проблема 1016 *?

НО, метод Initialize в классе инициализатора, однако, никогда не срабатывает (в ядре 2.0, после того, как я увидел, что класс Startup зарегистрировал реализацию DI ReferrerTelemetryInitializer)?

Чего нам не хватает?

1 Ответ

0 голосов
/ 29 января 2019

Вы ничего не пропустили, и это должно просто работать.Существует известная проблема , которая нарушает работу WebJobStartup в функциях.

EventTelemtery никогда не сообщается SDK автоматически (они сообщают о запросах, зависимостях, исключениях, трассировках и метриках).Можете ли вы проверить, вызывается ли инициализация с другими типами телеметрии в сетевом ядре 2.0?

...