Home > database >  Application Insights not logging browser data
Application Insights not logging browser data

Time:11-30

I am using application insights javascript sdk in my mvc application. I've copied the following snippet from here (https://docs.microsoft.com/en-us/azure/azure-monitor/app/javascript):

<script type="text/javascript">
!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<n.length;a  ){var i=n[a].split("=");2===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://" (o?o ".":"") "dc." (r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u "/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n "\nSnippet failed to load [" a "] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: " (S&&S.pathname||"_unknown_") "\nEndpoint: " i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"' ("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) (" n ")").replace(/\"/g,"") '"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n "Event",n "PageView",n "Exception",n "Trace",n "DependencyData",n "Metric",n "PageViewPerformance","start" r,"stop" r,"start" o,"stop" o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_" c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_" c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{
src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source
// name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied
// ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout,
// useXhr: 1, // Use XHR instead of fetch to report failures (if available),
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
// onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DO NOT ADD anything to the sdk.queue -- As they won't get called)
cfg: { // Application Insights Configuration
    instrumentationKey: "{InstrumentationKey}"
    enableDebug: true,
    verboseLogging: true,
    disableFetchTracking: false,
    enableCorsCorrelation: true,
    enableRequestHeaderTracking: true,
    enableResponseHeaderTracking: true
    /* ...Other Configuration Options... */
}});
</script>

Now the issue is when I browse any page of my web app I can see a track request in the network tab of chrome dev tool like the following:

Request Url: https://dc.services.visualstudio.com/v2/track
Response: {"itemsReceived":2,"itemsAccepted":0,"errors":[{"index":0,"statusCode":206,"message":"Telemetry sampled out."},{"index":1,"statusCode":206,"message":"Telemetry sampled out."}],"appId":"0bb96f1c-1feb-4191-b47c-eed8676dae68"}

In the resposne, we can see ItemsReceived are 2 but ItemsAccepted is 0 and there is an object in Errors array which says "Telemetry Sampled Out" and due to this I am unable to see any log in application insights on Azure portal.

Any idea how can I fix this?

CodePudding user response:

In the resposne, we can see ItemsReceived are 2 but ItemsAccepted is 0

We have followed the documented steps , to enable client side telemetry by adding client-side JavaScript SDK configuration in my .net MVC project ( default MVC project created by visual studio 2019).

Post adding the snippet based setup(that you have shared above) in _Layoutcs.html under <head> section we are able to see the browser based client metrics without any issue.

Here is the sample output for reference:

enter image description here

enter image description here

Errors array which says "Telemetry Sampled Out" and due to this I am unable to see any log in application insights on Azure portal.

Sampling not an error. It is turned on by default in many scenarios. For JavaScript you can configure sampling as outlined here

It could also be that you hit the daily data cap:

When you create an Application Insights resource in the Azure portal, the daily cap is set to 100 GB/day. When you create an Application Insights resource in Visual Studio, the default is small (only 32.3 MB/day).

I suspect it is the latter, as when sampling is turned on using the sdk you wouldn't see it cross the wire. Please see this doc describing how to adjust the cap.

For more information about the error Telemetry Sampled Out you can refer this SO thread.

  • Related