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;
}