Skip to content

V4

Compare
Choose a tag to compare
@djluck djluck released this 28 Mar 04:30
· 12 commits to master since this release

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 using DotNetRuntimeStatsBuilder.Customize() and passing a custom CaptureLevel.
  • 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 and dotnet_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 EventListeners periodically (net5.0 only as netcoreapp3.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

Fixes