У меня проблема со статистикой приложений для серверной части API моего приложения. услуга. Я вижу только один сеанс и одного пользователя. Я знаю, что это не так, поскольку я протестировал его с двух разных IP-адресов и записал результаты.
Похоже, что все события и ошибки записываются в аналитике приложения. и я могу просматривать метрики, события, сбои и т. д.... но не более 1 пользователя или сеанса.
Изначально я настроил ресурс анализа приложений внутри Azure и связал его со своей службой приложений API, но так как больше пользователей не было видно, я затем настроил информацию о приложениях Azure в своем проекте в VS и связал ее с существующим ключом инструмента, который я использую
https://www. youtube.com/watch?v=yhGu3aIiMdo&t=109s
Я обнаружил аналогичную проблему с подсчетом пользователей https://learn.microsoft.com/en-us/troub ... ure/azure- Monitor/app-insights/usage-troubleshoot#counting-users
относительно Все события телеметрии в Application Insights имеют идентификатор анонимного пользователя и идентификатор сеанса в качестве двух своих стандартных свойств. По умолчанию все инструменты анализа использования подсчитывают пользователей и сеансы на основе этих идентификаторов. Если эти свойства не заполняются уникальными идентификаторами для каждого пользователя и сеанса вашего приложения, вы увидите неправильное количество пользователей и сеансов в инструментах анализа использования.
Итак, я попытался установить это в коде, но идентификатор сеанса все равно я не смог найти идентификатор анонимного пользователя, который можно было бы установить.
Код: Выделить всё
var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "123";
var ipAddress = HttpContext.Connection.RemoteIpAddress.ToString();
if (ipAddress == "::1")
{
ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString();
}
telemetryClient.Context.User.Id = ipAddress;
telemetryClient.Context.User.AuthenticatedUserId = ipAddress;
telemetryClient.Context.Session.Id = ipAddress;
logger.LogInformation("User.Id -> " + ipAddress);
logger.LogInformation("User.AuthenticatedUserId -> " + ipAddress);
logger.LogInformation("Session.Id -> Ip -> " + ipAddress);
Код: Выделить всё
Session.Id -> Ip -> //ip address of first user
...
Session.Id -> Ip -> //ip address of second user
нужная помощь?
ОБНОВЛЕНИЕ
Просто чтобы уточнить, я запускаю реакцию node.js в одной службе приложений и C# API в другой службе приложений
ОБНОВЛЕНИЕ 2
Идентификатор пользователя и идентификатор сеанса всегда отображаются как одна запись со
значением
ОБНОВЛЕНИЕ 3
Попробовал то, что предложили @DareDevil(проект API) и @Harshitha(проект внешнего интерфейса).
Оба проекта работают локально. Я могу изменить код телементрии, группу ресурсов, строку подключения и т. д., чтобы они соответствовали различным сведениям о приложениях, например, одно для разработки, а другое для контроля качества... и оба анализа приложений показывают увеличение числа пользователей при запуске в локальной среде VS. Однако, когда я отправляю код в службу приложения, он показывает только одного пользователя с идентификатором
Я добавил события для проверки статуса
Код: Выделить всё
telemetry.Context.Session.Id = guid;
Оба проекта не подхватывают сеанс или пользователя . Есть идеи, почему? Спасибо за любые дополнительные ответы и спасибо за помощь
@Harshitha
Я запустил npm install applicationinsights --save, который добавил
"applicationinsights": "^2.7.2" в мой проект.
Затем я добавил (в свой webpack.js):
Код: Выделить всё
let appInsights = require("applicationinsights");
appInsights.setup("full connection string from app insight portal").start();
Код: Выделить всё
!function(T,l,y){var S=T.location,k="script",D="instrumentationKey",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a
Подробнее здесь: [url]https://stackoverflow.com/questions/76872090/azure-application-insight-only-showing-1-user-session[/url]