Application Insights сквозное многокомпонентное ведение журнала в функциях Azure - PullRequest
0 голосов
/ 20 декабря 2018

Сквозное ведение журнала между несколькими компонентами с использованием Application Insights (AI) основано на иерархическом Request-Id заголовке.Таким образом, каждый компонент несет ответственность за возможное поступление Request-Id.Для получения полного сквозного иерархического потока в Application Insights необходимо использовать заголовок Request-Id в качестве AI Operation.Id и Operation.ParentId (как описано здесь ).

Но при отправке запроса с заголовком Request-Id на функцию Azure с использованием привязки HttpTrigger, например (Microsoft.NET.Sdk.Functions 1.0.24) со встроенным Application Insights, настроенным (как описано здесь ) совершенно новый Operation.Id создан и используется, что приводит к потере всего потока в AI. Любые идеи о том, как обойти это?

Возможно, вам потребуется настроить отдельный пользовательский TelemetryClient.Но, похоже, требуется много настроек, чтобы получить правильные значения ExceptionTrackingTelemetryModule и DependencyTrackingTelemetryModule - особенно при использовании функций v2 и Core (см. AI config ).Кто-нибудь, что успешно работает?

1 Ответ

0 голосов
/ 21 декабря 2018

Это еще не поддерживается функциями, но должно начать работать где-то в начале следующего года.

Если вы хотите взломать его, вы можете добавить ссылку на ApplicationInsights SDK для AspNetCore (v 2.4.1) и настроить RequestTrackingTelemetryModule.

    static Function1()
    {
        requestModule = new RequestTrackingTelemetryModule();
        requestModule.Initialize(TelemetryConfiguration.Active);

    }

    private static RequestTrackingTelemetryModule requestModule;

Это довольно схематично, не полностьюпроверено и имеет недостатки.Например, собранный запрос больше не дополняется подробностями функций (идентификатор вызова и т. Д.).Чтобы преодолеть это, вам нужно получить реальную конфигурацию TelemetryConfiguration из контейнера ввода зависимостей Function и использовать ее для инициализации модуля.Это должно быть возможно , но заблокировано некоторой проблемой .

Но даже с кодом выше, вы должны получать запросы, которые относятся к входящим заголовкам и другой телеметрии, связанной сзапрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...