I have application insights setup and configured in workspace mode and for a web app on the linux app service plan, I am seeing all telemetry duplicated.
I believe I have narrowed down the problem, but I'm not sure why its happening. Here is some more information
- Creating a new application insights instance through the Azure portal and updating the connection string in the web app does not result in duplicate telemetry.
- Creating a new application insights instance through the bicep template and updating the connection string in the web app does still result in duplicate telemetry.
- Duplicate telemetry is generated whether the app is running locally or on the app service.
This to me would suggest its something related to the bicep template or the Azure portal is doing something extra which isn't reflected in the template. My problem is that if I compare what I currently have in the bicep file with what is generated via the Azure portal using the export template option, they are exactly the same.
Here is the bicep file for reference.
resource analyticWorkspace 'Microsoft.OperationalInsights/workspaces@2021-06-01' existing = {
name: analyticWorkspaceName
scope: resourceGroup()
}
resource insights 'microsoft.insights/components@2020-02-02' = {
name: insightsName
location: location
kind: 'web'
properties: {
Application_Type: 'web'
Flow_Type: 'Redfield'
Request_Source: 'IbizaAIExtension'
WorkspaceResourceId: analyticWorkspace.id
IngestionMode: 'LogAnalytics'
DisableIpMasking: true
publicNetworkAccessForIngestion: 'Disabled'
publicNetworkAccessForQuery: 'Enabled'
}
}
The web app in question is running .NET 6 and has a single call to
services.AddApplicationInsightsTelemetry(configuration);
The connection string is stored in the appsettings.json file locally and in the app settings for the app service. We do not use the instrumentation key.
Here is a sample of the telemetry
We can also find duplicates by running the following log analytics query
union (requests), (dependencies), (traces)
| summarize count () by itemType, sdkVersion, id, operation_Id
| where count_ > 1
Which shows a count of 2 for everything
Any ideas?