V4
Summary
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
).
Changes
Breaking changes
- Dropped support for
prometheus-net
v2. - Dropped support for
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 usingDotNetRuntimeStatsBuilder.Customize()
and passing a customCaptureLevel
.- Renamed
dotnet_gc_collection_reasons_total
->dotnet_gc_collection_count_total
Additions/ enhancements
- Added new threadpool metrics:
dotnet_threadpool_throughput_total
,dotnet_threadpool_queue_length
anddotnet_threadpool_timer_count
- Added
dotnet_gc_memory_total_available_bytes
to track the total amount of memory .NET can allocate to (this takes into account docker memory limits) - Added ability to configure the source of majority of collectors- can either be driven solely by event counters (
CaptureLevel.Counters
) or event listeners for more detailed metrics. - Added support for recycling
EventListener
s periodically (net5.0
only asnetcoreapp3.1
is impacted by dotnet/runtime#49804). - Improved the collection of debugging metrics available
- Added documentation around metrics exposed
- Added an example
docker-compose
stack that can be used for testing and experimentation