-
Notifications
You must be signed in to change notification settings - Fork 0
Metrics
Note
This feature is available in CoreForms version 8.2.0 and higher.
ASP.NET exported a number of metrics using Windows performance counters that provided information about the running application. Much of this logic was implemented in IIS, and was reimplemented in CoreForms. Metrics in CoreForms use System.Diagnostics.Metrics
instead of Windows performance counters. This provides a cross-platform friendly implementation and allows developers to use modern telemetry tools like OpenTelemetry.
Important
All the metrics reported by CoreForms only report metrics about the CoreForms pipeline. The metric "Requests Total", for example, will only show the number of requests that were executed in the CoreForms pipeline (.MapLegacyAspNet(...)
). Requests to ASP.NET Core Web API, Razor pages, etc. will not change the "Requests Total" metric as they do not execute in the CoreForms pipeline. Depending on your use case, use ASP.NET Core metrics instead.
CoreForms metrics are exported using the meter named "CoreForms.Web". You can register this meter in the telemetry toolstack of your choice.
For OpenTelemetry, we provide a Nuget packge CoreForms.Web.Infrastructure.OpenTelemetry
, which can be used when configuring metrics for OpenTelemetry:
services.AddOpenTelemetry()
.WithMetrics(builder =>
builder
.AddCoreFormsInstrumentation()
//.AddConsoleExporter()
//.AddOtlpExporter()
//.AddAspNetCoreInstrumentation()
);
There were three relevant groups of performance counters: "ASP.NET", "ASP.NET Applications", and "ASP.NET State Service". These group names come from the names displayed when selecting the performance counters in the Performance Monitor. The tables below show which performance counters are available in CoreForms. The legend for the supported column is:
- ✔
metric_name
: Supported in CoreForms as the specifiedmetric_name
- ⚠: Supported but see the "Remarks" column for more information
- ❌: Not supported. See "Remarks" for reason or why
In ASP.NET, applications were hosted in IIS worker processes, which could host many applications at the same time. Because of this, performance counters were split up into global ("ASP.NET" section) and local ("ASP.NET Applications") sections. This differentiation is obsolete with CoreForms as applications are not longer hosted in IIS worker processes. As such, none of the global performance counters are supported, but there are functioning counterparts for some of the performance counters in the "ASP.NET Applications" section.
Process Counter Name | Supported? | Remarks |
---|---|---|
Application Restarts | ❌ | No automatic application restarts |
Applications Running | ❌ | No longer hosted in IIS worker process |
Audit Failure Events Raised | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Audit Success Events Raised | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Error Events Raised | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Infrastructure Error Events Raised | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Request Error Events Raised | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Request Execution Time | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Request Wait Time | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Requests Current | ❌ | Use ASP.NET Core metrics instead |
Requests Disconnected | ⚠ | Use application counterpart in "ASP.NET Applications" below |
Requests In Native Queue | ❌ | No longer hosted in IIS worker process |
Requests Queued | ⚠ | Use application counterpart "Requests In Application Queue" in "ASP.NET Applications" below |
Requests Rejected | ⚠ | Use application counterpart in "ASP.NET Applications" below |
State Server Session Abandoned | ❌ | Session State server is not supported |
State Server Session Active | ❌ | Session State server is not supported |
State Server Session Timed Out | ❌ | Session State server is not supported |
State Server Session Total | ❌ | Session State server is not supported |
Worker Process Restarts | ❌ | No longer hosted in IIS worker process |
Worker Process Running | ❌ | No longer hosted in IIS worker process |
Process Counter Name | Supported? | Remarks |
---|---|---|
% Managed Processor Time (estimated) | ❌ | Use System.Runtime metrics instead |
Anonymous Requests | ✔ coreforms.anonymous_requests
|
|
Anonymous Request/Sec | ⚠ | Derive from reported metrics |
Application Lifetime Events | ✔ coreforms.events_app
|
|
Application Lifetime Events/Sec | ⚠ | Derive from reported metrics |
Audit Failure Events Raised | ✔ coreforms.audit_fail
|
|
Audit Success Events Raised | ✔ coreforms.audit_success
|
|
Cache % Machine Memory Limit Used | ❌ | Cache size detection does not work in .NET |
Cache % Process Memory Limit Used | ❌ | Cache size detection does not work in .NET |
Cache API Entries | ✔ coreforms.api_cache_entries
|
|
Cache API Hit Ratio | ⚠ | Can be calculated: coreforms.api_cache_hits / coreforms.api_cache_ratio_base
|
Cache API Hits | ✔ coreforms.api_cache_hits
|
|
Cache API Misses | ✔ coreforms.api_cache_misses
|
|
Cache API Trims | ❌ | Cache size detection does not work in .NET |
Cache API Turnover Rate | ✔ coreforms.api_cache_turnover_rate
|
|
Cache API Total Entries | ✔ coreforms.total_cache_entries
|
|
Cache API Total Hit Ratio | ⚠ | Can be calculated: coreforms.total_cache_hits / coreforms.total_cache_ratio_base
|
Cache API Total Hits | ✔ coreforms.total_cache_hits
|
|
Cache API Total Misses | ✔ coreforms.total_cache_misses
|
|
Cache API Total Trims | ❌ | Cache size detection does not work in .NET |
Cache API Total Turnover Rate | ✔ coreforms.total_cache_turnover_rate
|
|
Compilations Total | ✔ coreforms.compilations
|
|
Debugging Requests | ✔ coreforms.debugging_requests
|
|
Error Events Raised | ✔ coreforms.events_error
|
|
Error Events Raised/Sec | ⚠ | Derive from reported metrics |
Errors During Compilation | ✔ coreforms.errors_compiling
|
|
Errors During Execution | ✔ coreforms.errors_during_request
|
|
Errors During Preprocessing | ✔ coreforms.errors_pre_processing
|
|
Errors Total | ✔ coreforms.errors_total
|
|
Errors Total/Sec | ⚠ | Derive from reported metrics |
Errors Unhandled During Execution | ✔ coreforms.errors_unhandled
|
|
Errors Unhandled During Execution/Sec | ⚠ | Derive from reported metrics |
Events Raised | ✔ coreforms.events_total
|
|
Events Raised/Sec | ⚠ | Derive from reported metrics |
Forms Authentication Failure | ✔ coreforms.forms_auth_fail
|
|
Forms Authentication Success | ✔ coreforms.forms_auth_success
|
|
Infrastructure Error Events Raised | ✔ coreforms.events_http_infra_error
|
|
Infrastructure Error Events Raised/Sec | ⚠ | Derive from reported metrics |
Managed Memory Used (estimated) | ❌ | Use System.Runtime metrics instead |
Membership Authentication Failure | ✔ coreforms.member_fail
|
|
Membership Authentication Success | ✔ coreforms.member_success
|
|
Output Cache Entries | ✔ coreforms.output_cache_entries
|
|
Output Cache Hit Ratio | ⚠ | Can be calculated: coreforms.output_cache_hits / coreforms.output_cache_ratio_base
|
Output Cache Hits | ✔ coreforms.output_cache_hits
|
|
Output Cache Misses | ✔ coreforms.output_cache_misses
|
|
Output Cache Trims | ❌ | Cache size detection does not work in .NET |
Output Cache Turnover Rate | ✔ coreforms.output_cache_turnover_rate
|
|
Pipeline Instance Count | ✔ coreforms.pipelines
|
|
Request Bytes In Total | ✔ coreforms.request_bytes_in
|
|
Request Bytes In Total (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Request Bytes Out Total | ✔ coreforms.request_bytes_out
|
|
Request Bytes Out Total (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Request Error Events Raised | ✔ coreforms.events_http_req_error
|
|
Request Error Events Raised/Sec | ⚠ | Derive from reported metrics |
Request Events Raised | ✔ coreforms.events_web_req
|
|
Request Events Raised/Sec | ⚠ | Derive from reported metrics |
Request Execution Time | ✔ coreforms.app_request_exec_time
|
|
Request Wait Time | ✔ coreforms.app_request_wait_time
|
|
Requests Disconnected | ✔ coreforms.app_request_disconnected
|
|
Requests Executing | ✔ coreforms.requests_executing
|
|
Requests Executing (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Requests Failed | ✔ coreforms.requests_failed
|
|
Requests Failed (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Requests In Application Queue | ✔ coreforms.requests_in_application_queue
|
|
Requests Not Authorized | ✔ coreforms.requests_not_authorized
|
|
Requests Not Found | ✔ coreforms.requests_not_found
|
|
Requests Rejected | ✔ coreforms.app_requests_rejected
|
|
Requests Succeeded | ✔ coreforms.requests_succeded
|
|
Requests Succeeded (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Requests Timed Out | ✔ coreforms.requests_timed_out
|
|
Requests Total | ✔ coreforms.requests_total
|
|
Requests Total (WebSockets) | ❌ | ASP.NET Web Sockets are not supported |
Requests/Sec | ⚠ | Derive from reported metrics |
Session SQL Server connections total | ❌ | Session State server is not supported |
Session State Server connections total | ❌ | Session State server is not supported |
Sessions Abandoned | ✔ coreforms.sessions_abandoned
|
|
Sessions Active | ✔ coreforms.sessions_active
|
|
Sessions Timed Out | ✔ coreforms.sessions_timed_out
|
|
Sessions Total | ✔ coreforms.sessions_total
|
|
Transactions Aborted | ❌ | System.EnterpriseServices is not supported in .NET |
Transactions Commited | ❌ | System.EnterpriseServices is not supported in .NET |
Transactions Pending | ❌ | System.EnterpriseServices is not supported in .NET |
Transactions Total | ❌ | System.EnterpriseServices is not supported in .NET |
Transactions/Sec | ❌ | System.EnterpriseServices is not supported in .NET |
Viewstate MAC Validation Failure | ✔ coreforms.viewstate_mac_fail
|
The session state server concept is not supported in CoreForms. As such, none of the related performance counters are supported.
Process Counter Name | Supported? | Remarks |
---|---|---|
State Server Sessions Abandoned | ❌ | Session State server is not supported |
State Server Sessions Active | ❌ | Session State server is not supported |
State Server Sessions Timed Out | ❌ | Session State server is not supported |
State Server Sessions Total | ❌ | Session State server is not supported |