Troubleshoot no data: Application Insights for .NET and .NET Core
Article
This article provides troubleshooting information to help resolve issues when data is missing or doesn't appear when you're using Application Insights for .NET and .NET Core.
Note
This article was recently updated to use the term Azure Monitor logs instead of Log Analytics. Log data is still stored in a Log Analytics workspace, and it's still collected and analyzed by the same Log Analytics service. We're updating the terminology to better reflect the role of logs in Azure Monitor. For more information, see Azure Monitor terminology changes.
Some of my telemetry is missing
Example scenarios:
In Application Insights, I see only a fraction of the events that my app generates
If you're consistently seeing the same fraction, it's probably because of adaptive sampling. To confirm this cause, select Overview > Search and look at an instance of a Request or other event. To see the full property details, select the ellipsis (...) at the bottom of the Properties section. If the request count is greater than 1, sampling is in operation.
It's possible that you're hitting a data rate limit for your pricing plan. These limits are applied per minute.
I'm randomly experiencing data loss
Check whether you're experiencing data loss at the telemetry channel.
Check for any known issues in the telemetry channel of the GitHub repo.
Note
If data is missing, it's possible that the data is being rejected by the back end. This situation can occur for various reasons, including the following causes:
Required fields are missing.
One or more fields exceed size limits.
SDKs are failing silently instead of throwing exceptions.
You can use a tool like Fiddler, or any other tool that will inspect HTTP traffic, to confirm successful telemetry uploads. The back end will return a "200 OK" HTTP status code to indicate a successful upload. Or you can use the SDK logs to see if the back end is rejecting data.
I'm experiencing data loss in a console app or on a web app when the app is about to stop
The SDK channel keeps telemetry in buffer and sends it in batches. If the application is shutting down, you might need to explicitly call Flush(). The Flush() behavior depends on the actual channel used.
Request count collected by the Application Insights SDK doesn't match the IIS log count for my application
Internet Information Services (IIS) logs counts of all requests that reach IIS and can inherently differ from the total requests that reach an application. Because of this behavior, it isn't guaranteed that the request count collected by the SDKs will match the total IIS log count.
No data from my server
Example scenarios:
I installed my app on my web server and now I don't see any telemetry from it. It worked OK on my dev machine
If you have an ASP.NET application hosted in Azure App Service or in IIS on a virtual machine, your application could fail to connect to the Snapshot Debugger service because of a missing SSL security protocol.
The Snapshot Debugger endpoint requires TLS version 1.2. The set of SSL security protocols is one of the quirks enabled by the <httpRuntime> element's targetFramework attribute value in the <system.web> section of the web.config file. If the target framework is 4.5.2 or lower, TLS 1.2 isn't included by default.
Note
The <httpRuntime> element's targetFramework attribute value is independent of the target framework used when you build your application.
To check the setting, open your web.config file and find the <system.web> section. Make sure that the targetFramework for <httpRuntime> is set to 4.6 or above.
Modifying the <httpRuntime> element's targetFramework value changes the runtime quirks applied to your application and can cause other subtle behavior changes. Be sure to test your application thoroughly after you make this change. For a full list of compatibility changes, see Retargeting changes.
If the target framework is 4.7 or above, Windows determines the available protocols. In Azure App Service, TLS 1.2 is available. However, if you're using your own virtual machine, you might need to enable TLS 1.2 in the OS.
FileNotFoundException: "Could not load file or assembly Microsoft.AspNet TelemetryCorrelation"
When you upgrade from Application Insights SDKs older than version 2.4, make sure the following changes were applied to the web.config and ApplicationInsights.config files:
In web.config, you should have two HTTP modules instead of one. Order is important for some scenarios:
Failure to upgrade properly might lead to unexpected exceptions or telemetry not being collected.
No "Add Application Insights" option in Visual Studio
Example scenario:
When I right-click an existing project in Solution Explorer, I don't see any Application Insights options
The tools don't support all types of .NET projects. Web and Windows Communication Foundation (WCF) projects are supported. For other project types, such as desktop or service applications, you can still add an Application Insights SDK to your project manually.
Make sure you have Visual Studio 2013 Update 3 or later. It comes pre-installed with Developer Analytics tools, which provide the Application Insights SDK.
Select Tools > Extensions and Updates. Then check whether Developer Analytics Tools is installed and enabled. If it's installed and enabled, select Updates to see if there's an update available.
Open the New Project dialog and select ASP.NET Web Application. If you see the Application Insights option, the tools are installed. If not, uninstall and reinstall the Developer Analytics tools.
Adding Application Insights failed
Example scenario:
When I try to add Application Insights to an existing project, I see an error message
Likely causes:
Communication with the Application Insights portal failed.
Missing menu command to open Application Insights from Visual Studio
Example scenario:
When I right-click my project Solution Explorer, I don't see any Application Insights commands, or I don't see an Open Application Insights command
Likely causes:
You created the Application Insights resource manually.
The project is of a type that the Application Insights tools don't support.
The Developer Analytics tools are disabled in your instance of Visual Studio.
Your version of Visual Studio is older than Visual Studio 2013 Update 3.
Fix:
Make sure your Visual Studio version is Visual Studio 2013 Update 3 or later.
Select Tools > Extensions and Updates. Check to make sure that Developer Analytics Tools is installed and enabled. If it's installed and enabled, select Updates to see if there's an update available.
Right-click your project in Solution Explorer. If you see the command Application Insights > Configure Application Insights, use it to connect your project to the resource in the Application Insights service.
Otherwise, your project type isn't directly supported by the Developer Analytics tools. To see your telemetry, sign in to the Azure portal, search for and select Application Insights, and select your application.
"Access denied" on opening Application Insights from Visual Studio
Example scenario:
The "Open Application Insights" menu command takes me to the Azure portal, but I get an "access denied" error
You have more than one Microsoft account—perhaps a work and a personal Microsoft account. If that's the case, the sign-in that you last used on your default browser was for a different account than the one that has access to add Application Insights to the project.
Select your name in the upper right corner of the browser window and sign out. Then sign in with the account that has access. Search for and select Application Insights and select your application.
Someone else added Application Insights to the project and they forgot to give you access to the resource group in which it was created.
If they used an organizational account, they can add you to the team. Or they can grant you individual access to the resource group.
"Asset not found" on opening Application Insights from Visual Studio
Example scenario:
The "Open Application Insights" menu command takes me to the Azure portal, but I get an "asset not found" error
There are two likely causes:
The Application Insights resource for your application was deleted.
Someone set or changed the connection string in ApplicationInsights.config without updating the project file.
The connection string in the ApplicationInsights.config file controls where the telemetry is sent. A line in the project file controls which resource is opened when you use the command in Visual Studio.
Apply one of the following fixes:
In Solution Explorer, right-click the project and select Application Insights > Configure Application Insights. In the dialog, you can either select to send telemetry to an existing resource or create a new one.
Open the resource directly. Sign in to the Azure portal, search for and select Application Insights, and select your application.
Where do I find my telemetry?
Example scenario:
I signed in to the Azure portal, and I'm looking at the Azure home dashboard. So where do I find my Application Insights data?
Search for and select Application Insights, and select your application. If you don't have any projects there, you need to add or configure Application Insights in your web project. You can browse through the summary charts that appear to see more detail.
In Visual Studio, while you're debugging your app, select the Application Insights button.
No server data (or no data at all)
Example scenario:
I ran my app and then opened the Application Insights service in Microsoft Azure, but all the charts show "Learn how to collect," "Not configured," or only page view and user data, but no server data
Run your application in debug mode in Visual Studio (F5). Use the application to generate some telemetry. Check that you can see events logged in the Visual Studio output window.
In the Application Insights portal, select Overview > Search. Data usually appears here first.
Select Refresh. The pane refreshes itself periodically, but you can also do it manually. The refresh interval is longer for larger time ranges.
Verify that the connection strings match. On the main pane for your app in the Application Insights portal, in the Essentials dropdown list, look at Connection string. Then, in your project in Visual Studio, open ApplicationInsights.config and find the <ConnectionString> element. Check whether the two strings are equal. If the strings don't match, take one of the following actions:
Search for and select Application Insights and then look for the app resource with the right string.
Visual Studio
In Visual Studio Solution Explorer, right-click the project and select Application Insights > Configure. Reset the app to send telemetry to the correct resource.
If you can't find the matching strings, check to make sure that you're using the same sign-in credentials in Visual Studio that you're using to sign in to the portal.
In the Azure portal, search for and select Service Health. If the map has some alert indications, wait until they've returned to health. Then close and reopen your Application Insights application pane.
No (server) data since I published the app to my server
Check that you copied all the Microsoft.ApplicationInsights DLLs to the server, together with Microsoft.Diagnostics.Instrumentation.Extensions.Intercept.dll.
If you have to use a proxy to send out of your corporate network, set the <defaultProxy> element in web.config.
Performance impact when Application Insights is enabled
Enabling Application Insights SDK in your application may occasionally lead to performance issues, such as high CPU usage, memory leaks, thread leaks, or TCP port exhaustion. These issues commonly originate from the application leaking Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration objects. Each leaked instance creates two additional threads, which leading to a continual increase in the process's thread count over time. If you observe a growing number of threads, it's crucial to check for leaks of TelemetryConfiguration objects.
Common causes of TelemetryConfiguration leaks
There are two primary causes of leaking TelemetryConfiguration objects:
Explicit creation in code: If you create TelemetryConfiguration objects within your code, ensure that they are not inadvertently created per web request. Instead, use a shared global instance. For .NET Framework applications, access the global instance with TelemetryConfiguration.Active. For .NET Core applications, use TelemetryConfiguration.CreateDefault() to obtain a default configuration.
Improper service provider usage: In .NET Core applications, avoid calling services.BuildServiceProvider() within ConfigureServices. BuildServiceProvider method creates a new service provider that initializes and reads the configuration, resulting in a new TelemetryConfiguration object each time. Such a pattern can lead to leaks and is discouraged, as noted in the Visual Studio warning against this coding practice.
I used to see data, but it's stopped
Have you hit your monthly quota of data points? Open Settings > Quota and Pricing to find out. If so, you can upgrade your plan or pay for more capacity. See the pricing scheme.
I don't see all the data I'm expecting
If your application sends considerable data and you're using the Application Insights SDK for ASP.NET version 2.0.0-beta3 or later, the adaptive sampling feature might operate and send only a percentage of your telemetry.
You can disable it, but we don't recommend that. Sampling is designed so that related telemetry is correctly transmitted for diagnostic purposes.
Client IP address is 0.0.0.0
On February 5, 2018, we announced that we removed logging of the Client IP address. This recommendation doesn't affect geolocation.
Note
If you need the first three octets of the IP address, you can use a telemetry initializer to add a custom attribute.
This issue doesn't affect data collected before February 5, 2018.
Wrong geographical data in user telemetry
The city and country/region dimensions are derived from IP addresses and aren't always accurate. These IP addresses are processed for location first and then changed to 0.0.0.0 to be stored.
Exception "method not found" on running in Azure Cloud Services
The latest version of Microsoft.ApplicationInsights.AspNetCore is 2.14.0, and it refers to Microsoft.ApplicationInsights version 2.14.0. For this reason, the version of Microsoft.ApplicationInsights.AspNetCore to be installed should be 2.14.0.
Modify the ConfigureServices method in your Startup.cs class:
Alternatively, you can use a cross-platform .NET Core tool, dotnet-trace, for collecting logs that can provide further help in troubleshooting. This tool might be helpful for Linux-based environments.
After you install dotnet-trace, run the following dotnet-trace collect command in bash:
The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.
Describes how to test connectivity and telemetry ingestion by using PowerShell or curl to identify the step in the processing pipeline that causes telemetry to go missing.