Monitor ASP.NET Core application performance across five areas: HTTP request throughput and latency, process memory, GC and heap health, thread pool, and routing.

Dashboards → + New dashboard → Import JSON
What This Dashboard Monitors
- Request & Response: HTTP request rate, latency percentiles (P50/P95/P99), active requests, and error breakdown by route
- Process: Working set memory and CPU time
- GC & Memory: Collection counts by generation (Gen0/Gen1/Gen2), total allocated bytes, heap size and fragmentation, GC pause time, and committed memory
- Threading & Exceptions: Thread pool thread count, queue length, work item throughput, and exceptions by type
- Routing & Memory Pool: Route match success and failure rates; Kestrel memory pool rental, allocation, pooling, and eviction (.NET 10+ only)
Metrics Included
Request & Response
- HTTP Request Duration: Shows request latency percentiles (P50, P95, P99) over time
- Active Requests: Shows in-flight HTTP requests over time
- Kestrel Active Connections: Shows open Kestrel connections over time
- Kestrel Connection Duration: Shows Kestrel connection lifetime over time
Process
- Memory Working Set: Shows process working set over time
- CPU Time: Shows CPU time consumed by state over time
GC & Memory
- GC Collections: Shows garbage collection counts by generation (Gen0, Gen1, Gen2) over time
- Heap Total Allocated: Shows total bytes allocated on the managed heap over time
- Heap Size After GC: Shows heap size after the last collection over time
- Committed Memory: Shows memory committed after the last collection over time
- Heap Fragmentation: Shows heap fragmentation after the last collection over time
- GC Pause Time: Shows time spent in GC pause over time

Threading & Exceptions
- Thread Pool Thread Count: Shows the number of active thread pool threads over time
- Thread Pool Queue Length: Shows the work queue length over time
- Work Items Completed: Shows thread pool work items completed over time
- Exceptions: Shows exceptions thrown over time, grouped by
error.type

Routing & Memory Pool
- Route Match Attempts: Shows route match attempts grouped by status (
success/failure) over time - Memory Pool Rented: Shows bytes rented from the Kestrel memory pool over time
- Memory Pool Allocated: Shows bytes allocated from the OS for the pool over time
- Memory Pool Pooled: Shows bytes currently held in the pool over time
- Memory Pool Evicted: Shows bytes evicted from the pool over time

Dashboard Variables
- deployment.environment: Filter by deployment environment. Set by adding
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=<value>to your application's environment. - service.name: Filter by service name. Populated from
OTEL_SERVICE_NAME.
The variables cascade: picking an environment narrows the service name dropdown to services running in that environment.