Azure - App Insights - как отследить вошедшее в систему имя пользователя в Auth Id? - PullRequest
0 голосов
/ 05 мая 2019

Каков наилучший поддерживаемый подход для отслеживания зарегистрированных имен пользователей / идентификаторов в телеметрии App Insights?

Пользователь с именем пользователя "JonTester1" сказал, что некоторые страницы, которые он посетил 4 часа назад, были очень медленными. Как мне увидеть все, что JonTester1 сделал в App Insights, чтобы выяснить, на какие страницы он ссылается?

Похоже, User Id в App Insights - это некий Azureсозданная анонимная вещь, такая как u7gbh, которая связана с собственной идеей того же пользователя (через cookie?). Он вообще не знает имен пользователей нашего приложения .

Я также видел отдельное поле в App Insights под названием Auth Id (или user_AuthenticatedId в некоторых местах), котороевыглядит иногда имеет фактическое имя пользователя, например, "JonTester1" заполнено - но не всегда ... И хотя я не вижу какого-либо упоминания этого поля в документах, кажетсямногообещающий. Как код / ​​конфиг нашего приложения должен устанавливать Auth Id, чтобы убедиться, что он установлен для каждого журнала / телеметрии App Insights?

Соответствующие документы MS:

  • https://docs.microsoft.com/en-us/azure/azure-monitor/app/usage-send-user-context Это просто копирование идентификатора пользователя объекта Telemtry из библиотеки в другой ... в любом случае упоминание нашего пользовательского, полезного имени пользователя / идентификатора ... и большинства-простые примеры, которые я вижу на самом деле не похожи на это, включая собственные примеры MS Docs в третьей ссылке ниже ;вместо этого они жестко получают код new TelemtryClient()
  • https://docs.microsoft.com/en-us/azure/azure-monitor/app/website-monitoring Нет упоминания о постоянном отслеживании пользовательского имени пользователя / идентификатора
  • https://docs.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics#authenticated-users Показывает несколько разных полезных частей, но все женет полного примера.Например, с помощью only setAuth... вызова функции JS (все еще нет полного примера работающей клиентской JS, которая отслеживает пользователя) на странице, вам не нужен какой-либо код на стороне сервера, чтобы он моготслеживать пользовательский идентификатор пользователя для телеметрии как на стороне клиента, так и на стороне сервера, отправляемой в Azure ... тем не менее, он также показывает явный код для нового создания серверной части TelemetryClient () для отслеживания идентификатора пользователя (в Global.asax.cs илигде?) ... так вам нужны оба?

Подобные вопросы SO, но не соединяйте точки / покажите полное решение:

Я надеюсь, что этот вопрос и ответы могут быть полученыэто более сглажено;надеюсь, лучше справится с документацией, чем соответствующие документы MS ...

1 Ответ

1 голос
/ 05 мая 2019

Первая ссылка в вашем вопросе перечисляет ответ. Что он показывает, так это как написать собственный инициализатор телеметрии . Такой инициализатор позволяет добавлять или перезаписывать свойства, которые будут отправляться вместе с любой телеметрией, отправляемой в App Insights.

Как только вы добавите его в конфигурацию, либо в коде, либо в файле конфигурации (см. Документы, упомянутые ранее в ответе), он выполнит свою работу без необходимости создавать специальные экземпляры TelemtryClient. Вот почему этот текст с вашей стороны не имеет смысла для меня:

[…] и большинство примеров в дикой природе, которые я вижу, на самом деле не выглядят так, включая собственные примеры MS Docs в третьей ссылке ниже; вместо этого они жестко получают новый TelemtryClient ()

Вы можете перезаписать значение UserId или перезаписать AuthenticatedUserId в инициализаторе. Вы можете изменить код, указанный в документации, следующим образом:

        if (requestTelemetry != null && !string.IsNullOrEmpty(requestTelemetry.Context.User.Id) &&
            (string.IsNullOrEmpty(telemetry.Context.User.Id) || string.IsNullOrEmpty(telemetry.Context.Session.Id)))
        {
            // Set the user id on the Application Insights telemetry item.
            telemetry.Context.User.AuthenticatedUserId = HttpContext.Current.User.Identity.Name;
        }

Затем вы можете увидеть Auth Id и User Id, зайдя на ваш ресурс AI -> Поиск и щелкнув по элементу. Обязательно сначала нажмите «Показать все», в противном случае поле не отображается.

Идентификатор аутентификации на приведенном ниже снимке экрана соответствует идентификатору пользователя из базы данных в нашем примере:

enter image description here

Мы также обращаемся к серверу с помощью функций Azure, поэтому мы также устанавливаем сторону сервера с идентификатором пользователя, поскольку в таких сценариях нет клиента.

Нет ничего плохого в том, чтобы установить его в обоих местах, на javascript и на стороне сервера через инициализатор. Таким образом, вы охватите все сценарии.

...