prometheus-net-contrib
A plugin for the prometheus-net package, exposing event counters and diagnostic listeners for .NET Core Runtime, ASP.NET Core, SignalR, GRPC, etc.
Installation
Supports .NET core v3.0+ only.
Add the package from nuget :
dotnet add package prometheus- net.Contrib
And then start the collectors:
public class Startup
{
public void ConfigureServices ( IServiceCollection services )
{
...
services. AddPrometheusCounters ( ) ;
services. AddPrometheusAspNetCoreMetrics ( ) ;
services. AddPrometheusHttpClientMetrics ( ) ;
services. AddPrometheusSqlClientMetrics ( ) ;
}
}
.NET Core 3.0 Event Counters
Runtime
Name
Type
Description
runtime_cpu_usage_ratio
Gauge
CPU usage in percents
runtime_memory_working_set_megabytes
Gauge
Working Set in megabytes
runtime_gc_heap_size_megabytes
Gauge
GC Heap Size in megabytes
runtime_gc_count
Gauge
GC Count
runtime_exceptions_total
Gauge
Exception Count
runtime_threadpool_threads_total
Gauge
ThreadPool Thread Count
runtime_lock_contention_total
Gauge
Monitor Lock Contention Count
runtime_threadpool_queue_length
Gauge
ThreadPool Queue Length
runtime_threadpool_completed_items_total
Gauge
ThreadPool Completed Work Item Count
runtime_time_in_gc_ratio
Gauge
% Time in GC since last GC
runtime_gc_size_bytes
Gauge
GC size in bytes
runtime_allocation_rate_bytes
Gauge
Allocation Rate in bytes
runtime_assemblies_total
Gauge
Number of Assemblies Loaded
runtime_active_timers_total
Gauge
Number of Active Timers
ASP .NET Core
Name
Type
Description
aspnetcore_requests_per_second
Gauge
Request Rate
aspnetcore_requests_total
Gauge
Total Requests
aspnetcore_requests_current_total
Gauge
Current Requests
aspnetcore_requests_failed_total
Gauge
Failed Requests
ASP .NET Core SignalR
Name
Type
Description
signalr_connections_started_total
Gauge
Total Connections Started
signalr_connections_stopped_total
Gauge
Total Connections Stopped
signalr_connections_timed_out_total
Gauge
Total Connections Timed Out
signalr_connections_current_total
Gauge
Current Connections
signalr_connections_duration_seconds
Gauge
Average Connection Duration
ASP .NET Core GRPC Server
Name
Type
Description
grpc_server_calls_total
Gauge
Total Calls
grpc_server_calls_current_total
Gauge
Current Calls
grpc_server_calls_failed_total
Gauge
Total Calls Failed
grpc_server_deadline_exceeded_total
Gauge
Total Calls Deadline Exceeded
grpc_server_messages_sent_total
Gauge
Total Messages Sent
grpc_server_messages_received_total
Gauge
Total Messages Received
grpc_server_calls_unimplemented_total
Gauge
Total Calls Unimplemented
ASP .NET Core GRPC Client
Name
Type
Description
grpc_client_calls_total
Gauge
Total Calls
grpc_client_calls_current_total
Gauge
Current Calls
grpc_client_calls_failed_total
Gauge
Total Calls Failed
grpc_client_calls_deadline_exceeded_total
Gauge
Total Calls Deadline Exceeded
grpc_client_messages_sent_total
Gauge
Total Messages Sent
grpc_client_messages_received_total
Gauge
Total Messages Received
.NET Core Diagnostic Listeners
ASP .NET Core
Name
Type
Description
aspnetcore_requests_duration_seconds
Histogram
The duration of HTTP requests processed by an ASP.NET Core application
aspnetcore_requests_errors_total
Counter
Total HTTP requests received errors
HTTP Client
Name
Type
Description
http_client_requests_duration_seconds
Histogram
Time between first byte of request headers sent to last byte of response received
http_client_requests_errors_total
Counter
Total HTTP requests sent errors
SQL Client
Name
Type
Description
sqlclient_commands_duration_seconds
Histogram
The duration of DB requests processed by an application
sqlclient_commands_errors_total
Counter
Total DB command errors
sqlclient_connections_opened_total
Counter
Total opened DB connections
sqlclient_connections_closed_total
Counter
Total closed DB connections
sqlclient_connections_errors_total
Counter
Total DB connections errors
sqlclient_transactions_committed_total
Counter
Total committed transactions
sqlclient_transactions_rollback_total
Counter
Total rollback transactions
sqlclient_transactions_errors_total
Counter
Total DB transaction errors
SQL Client (Microsoft.Data.SqlClient 3.x)
Name
Type
Description
sqlclient_active_hard_connections_total
Gauge
Actual active connections are made to servers
sqlclient_hard_connects_per_second
Gauge
Actual connections are made to servers
sqlclient_hard_disconnects_per_second
Gauge
Actual disconnections are made to servers
sqlclient_active_soft_connections_total
Gauge
Active connections got from connection pool
sqlclient_soft_connects_per_second
Gauge
Connections got from connection pool
sqlclient_soft_disconnects_per_second
Gauge
Connections returned to the connection pool
sqlclient_non_pooled_connections_total
Gauge
Number of connections are not using connection pooling
sqlclient_pooled_connections_total
Gauge
Number of connections are managed by connection pooler
sqlclient_active_connection_pool_groups_total
Gauge
Number of active unique connection strings
sqlclient_inactive_connection_pool_groups_total
Gauge
Number of unique connection strings waiting for pruning
sqlclient_active_connection_pools_total
Gauge
Number of active connection pools
sqlclient_inactive_connection_pools_total
Gauge
Actual connections are made to servers
sqlclient_active_connections_total
Gauge
Number of active connections
sqlclient_free_connections_total
Gauge
Number of free-ready connections
sqlclient_stasis_connections_total
Gauge
Number of connections currently waiting to be ready
sqlclient_reclaimed_connections_total
Gauge
Number of reclaimed connections from GC
GRPC Client
Name
Type
Description
grpc_client_requests_duration_seconds
Histogram
Time between first byte of request headers sent to last byte of response received
grpc_client_requests_errors_total
Counter
Total GRPC requests sent errors
Identity Server
dotnet add package prometheus- net.IdentityServer
And then start the collectors:
public class Startup
{
public void ConfigureServices ( IServiceCollection services )
{
services. AddIdentityServer ( options =>
{
options. Events. RaiseErrorEvents = true ;
options. Events. RaiseFailureEvents = true ;
options. Events. RaiseInformationEvents = true ;
options. Events. RaiseSuccessEvents = true ;
} ) ;
services. AddPrometheusIdentityServerMetrics ( ) ;
}
}
Name
Type
Description
idsrv_api_authentication_failure_total
Counter
Gets raised for successful API authentication at the introspection endpoint
idsrv_api_authentication_failure_total
Counter
Gets raised for failed API authentication at the introspection endpoint
idsrv_client_authentication_success_total
Counter
Gets raised for successful client authentication at the token endpoint
idsrv_client_authentication_failure_total
Counter
Gets raised for failed client authentication at the token endpoint
idsrv_token_issued_success_total
Counter
Gets raised for successful attempts to request access tokens
idsrv_token_issued_failure_total
Counter
Gets raised for failed attempts to request access tokens
idsrv_token_introspection_success_total
Counter
Gets raised for successful attempts to request identity tokens, access tokens, refresh tokens and authorization codes
idsrv_token_introspection_failure_total
Counter
Gets raised for failed attempts to request identity tokens, access tokens, refresh tokens and authorization codes
idsrv_token_revoked_success_total
Counter
Gets raised for successful token revocation requests.
idsrv_user_login_success_total
Counter
Gets raised by the UI for successful user logins
idsrv_user_login_failure_total
Counter
Gets raised by the UI for failed user logins
idsrv_user_logout_success_total
Counter
Gets raised for successful logout requests
idsrv_consent_granted_total
Counter
Gets raised in the consent UI
idsrv_consent_denied_total
Counter
Gets raised in the consent UI
idsrv_unhandled_exceptions_total
Counter
Gets raised for unhandled exceptions
idsrv_device_authorization_success_total
Counter
Gets raised for successful device authorization requests
idsrv_device_authorization_success_total
Counter
Gets raised for failed device authorization requests
Prometheus healthchecks
It is possible to publish all healthchecks results to a prometheus
public virtual void ConfigureServices ( IServiceCollection services )
{
services. AddHealthChecks ( )
. AddSqlServer ( " <Connection String>" , name: " sqlserver" )
services. AddSingleton < IHealthCheckPublisher , PrometheusHealthcheckPublisher > ( ) ;
return services ;
}