Exposes .NET core runtime metrics (GC, JIT, lock contention, thread pool) using the prometheus-net package
Microsoft.Extensions.DependencyInjection
For more info, see:
As new counter and event sources are added to .NET, this library needed a mechanism to determine what events and counters are available for a given runtime version. This version defines a mechanism for describing the minimum required .NET runtime version in order to use a set of events or counters.
.net50
A large refactor that aims to make this library far more stable and performant by default. Event counters are now the default source of metrics while more detailed events can be enabled manually when required (see CaptureLevel
).
prometheus-net
v2.netcoreapp2.2
WithThreadPoolSchedulingStats
has been removed- it was both a performance hog and incorrect (the IDs of the start/stop events were not stable). May consider adding this in a later release as .NET 5.0 should have fixed the stable IDs issue.DotNetRuntimeStatsBuilder.Default()
now only uses event counters to generate metrics. JIT metrics will not be collected (there are no JIT-related event counters in .NET core 3.1). Plan to add support for .NET 5.0 in a later release. You can restore more detailed metrics by using DotNetRuntimeStatsBuilder.Customize()
and passing a custom CaptureLevel
.dotnet_gc_collection_reasons_total
-> dotnet_gc_collection_count_total
dotnet_threadpool_throughput_total
, dotnet_threadpool_queue_length
and dotnet_threadpool_timer_count
dotnet_gc_memory_total_available_bytes
to track the total amount of memory .NET can allocate to (this takes into account docker memory limits)CaptureLevel.Counters
) or event listeners for more detailed metrics.EventListener
s periodically (net5.0
only as netcoreapp3.1
is impacted by dotnet/runtime#49804).docker-compose
stack that can be used for testing and experimentation