Monitoring .NET applications is essential for maintaining performance, reliability, and availability in production environments. Azure Application Insights is a powerful Application Performance Management (APM) service in Microsoft Azure that provides real-time telemetry, distributed tracing, dependency tracking, and advanced analytics for ASP.NET Core, .NET Web API, and background services. This guide explains how to monitor .NET applications using Azure Application Insights with practical configuration steps.

What is Azure Application Insights?

Azure Application Insights is a cloud-based monitoring and observability service that collects telemetry data such as requests, exceptions, performance metrics, logs, and dependency calls. It helps developers detect performance bottlenecks, diagnose failures, and analyze user behavior.

Core monitoring capabilities include:

It integrates seamlessly with ASP.NET Core, .NET Core Web API, Worker Services, and Azure-hosted workloads.

Prerequisites

Before configuring Application Insights for .NET applications, ensure:

Step 1: Create an Azure Application Insights Resource

You can create the resource from Azure Portal or using Azure CLI.

Using Azure CLI:

az monitor app-insights component create \
  --app my-dotnet-app-insights \
  --location centralindia \
  --resource-group my-monitoring-rg \
  --application-type web

After creation, copy the Connection String from the Azure Portal. This will be required in the application configuration.

Step 2: Install Application Insights SDK in ASP.NET Core

Add the required NuGet package:

dotnet add package Microsoft.ApplicationInsights.AspNetCore

Step 3: Configure Application Insights in Program.cs

For .NET 6 or later (Minimal Hosting Model):

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry(options =>
{
    options.ConnectionString = builder.Configuration["ApplicationInsights:ConnectionString"];
});

var app = builder.Build();

app.MapControllers();

app.Run();

Add the connection string in appsettings.json:

{
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=YOUR_KEY;IngestionEndpoint=https://centralindia-0.in.applicationinsights.azure.com/"
  }
}

Step 4: Monitor Requests and Dependencies

Once configured, Application Insights automatically tracks:

No additional configuration is required for basic telemetry collection in ASP.NET Core applications.

Step 5: Track Custom Events and Metrics

You can send custom telemetry using TelemetryClient.

using Microsoft.ApplicationInsights;

public class OrderService
{
    private readonly TelemetryClient _telemetryClient;

    public OrderService(TelemetryClient telemetryClient)
    {
        _telemetryClient = telemetryClient;
    }

    public void ProcessOrder(string orderId)
    {
        _telemetryClient.TrackEvent("OrderProcessed", new Dictionary<string, string>
        {
            { "OrderId", orderId }
        });

        _telemetryClient.TrackMetric("OrdersProcessed", 1);
    }
}

This enables business-level monitoring in addition to system metrics.

Step 6: Enable Distributed Tracing

Azure Application Insights supports distributed tracing across microservices. If multiple .NET services use Application Insights, correlation IDs are automatically propagated through HTTP headers.

This helps trace end-to-end transactions in microservices architecture deployed on Azure Container Apps, Azure App Service, or Kubernetes.

Step 7: View Logs and Analyze Telemetry

Use Azure Portal to explore:

Example KQL query to find failed requests:

requests
| where success == false
| order by timestamp desc

Step 8: Monitor Background Services and Worker Apps

For .NET Worker Services, install:

dotnet add package Microsoft.ApplicationInsights.WorkerService

Then configure:

builder.Services.AddApplicationInsightsTelemetryWorkerService();

This enables telemetry collection for background jobs, queue processors, and scheduled tasks.

Best Practices for Monitoring .NET Applications

When to Use Azure Application Insights

Azure Application Insights is ideal for:

Summary

Monitoring .NET applications using Azure Application Insights provides comprehensive observability through real-time telemetry, distributed tracing, dependency tracking, custom events, and advanced analytics. By creating an Application Insights resource in Azure, installing the appropriate SDK for ASP.NET Core or Worker Services, configuring the connection string, and leveraging built-in monitoring features, developers can proactively detect performance issues, diagnose failures, and optimize application reliability. With support for Kusto queries, live metrics, and alerting, Azure Application Insights enables scalable and production-ready monitoring for modern cloud-based .NET workloads.