Search code examples
azureazure-sql-databaseazure-application-insights

App Insights: Disable SQL Dependency telemetry


I'm using Azure Application Insights for a website (Azure App Service). On that I'm using a clustered Umbraco setup and hangfire. These two alone keep hitting the database every minute and are flooding my 'App Insights'.

So my question is, how do I disable the Sql Dependency Tracker? I've had a look at the ApplicationInsights.config and couldn't find anything obvious. I can see Microsoft.ApplicationInsights.DependencyCollector which is probably responsible, but I don't want to remove all types of dependency telemetry, only sql.

Thanks


Solution

  • Your best bet here is to use a Telemetry Processor to filter out certain types of dependency requests. Check out these resources below for information.

    Sampling, filtering and preprocessing telemetry in the Application Insights SDK

    Request filtering in Application Insights with Telemetry Processor

    An example processor might look like this.

    using Microsoft.ApplicationInsights.Channel;
    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.ApplicationInsights.DataContracts;
    
    public class NoSQLDependencies : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }
    
        // Link processors to each other in a chain.
        public NoSQLDependencies(ITelemetryProcessor next)
        {
            this.Next = next;
        }
        public void Process(ITelemetry item)
        {
            if (IsSQLDependency(item)) { return; }
            this.Next.Process(item);
        }
    
        private bool IsSQLDependency(ITelemetry item)
        {
            var dependency = item as DependencyTelemetry;
            if (dependency?.DependencyTypeName == "SQL")
            {
                return true;
            }
            return false;
        }
    }