Добавление идентификатора корреляции в автоматически создаваемую телеметрию с помощью App Insights


Я очень новичок в Application Insights, и я думаю использовать его для набора сервисов, которые я планирую реализовать с помощью asp.net webapi. Мне удалось очень легко запустить базовую телеметрию (щелкнув правой кнопкой мыши проект на VS, добавить Application Insights), но затем я попал в блок. Я планирую установить идентификатор корреляции в заголовках запросов для вызовов нижестоящих служб, и я хотел бы отметить все телеметрические данные, связанные с одним внешним вызовом, с той же корреляцией идентификатор.

До сих пор я обнаружил, что есть способ настроить TelemetryInitializer, но если я правильно понял, это выполняется до того, как я получу доступ к запросу, то есть я не могу проверить, есть ли идентификатор корреляции, который я должен прикрепить.

Таким образом, я предполагаю, что может быть 2 способа решить эту проблему: 1) Если я могу каким-то образом получить доступ к заголовкам запроса до инициализатора, это, очевидно, решит проблему, или 2) каким-то образом получить доступ к экземпляру TelemetryClient, который используется для сообщения о автоматически генерируемая телеметрия.

Возможно, последним средством было бы отключить все автоматические вещи и сделать все это вручную, когда я, конечно, мог бы контролировать, какие свойства установлены на TelemetryClient. Но это будет намного больше работы, поэтому я предпочел бы найти какое-то другое решение.
2 3

2 ответа:

Вы были правы, говоря, что вы должны использовать TelemetryInitializer. Все TelemetryInitializers вызывается, когда метод трек называется на любой пункт телеметрии. Телеметрия автоматически генерируемых запросов "отслеживается" по запросу OnEnd, в это время вам должны быть доступны все ваши пользовательские заголовки.

Также обратите внимание на OperationId - это часть стандартного контекста, управляемого приложением Inisghts, и используется именно для корреляции запросов с последующим выполнением. Это создается и передается автоматически, включая трассировки (если вы используете trackTrace).

Кроме того, у нас есть встроенная поддержка в нашем UX для удобного просмотра всей телеметрии для конкретной операции - ее можно найти в "Search - > Details->Related Items->All telemetry for this operation"