ASP.NET Core middleware and stand-alone Kestrel server for exporting metrics to Prometheus
Requires NuGet 2.8 or higher.
Install-Package prometheus-net.AspNetCore -Version 3.2.1
dotnet add package prometheus-net.AspNetCore --version 3.2.1
<PackageReference Include="prometheus-net.AspNetCore" Version="3.2.1" />
paket add prometheus-net.AspNetCore --version 3.2.1
- Fix NuGet packaging defect that caused reference failures after installing .2.0 on .NET Core 2.1 or newer. #158
- Enable custom HTTP client to be used in MetricPusher, allowing for Basic auth and more flexibility. #125
- Add DiagnosticSourceAdapter (.NET Core only). #153
- Improved compatibility with older .NET Framework versions. #155
- Fix timezone mismatch in Summary that led to unintended delays in buffer flushing. #149
- Fix regression introduced in 3.1.0 where MetricPusher does not always flush metrics before stopping.
- Fix defect where Histogram batch observations only incremented sum by one value, instead of entire batch. #147
- Added missing UTF-8 charset to Content-Type header, so non-ASCII characters are interpreted correctly by browsers.
- Added ICounter.NewTimer() (adds the value to the counter)
- Eliminated some needless allocations when trying to register a metric that is already registered. #134
- Added IHistogram.Count and IHistogram.Sum to expose aspects of collected data for inspection.
- Added Collector.GetAllLabelValues() to expose the list of child metrics by all their known label values.
- Metric export is now asynchronous internally to be compatible with ASP.NET Core 3.0 default configuration.
- Added CollectorRegistry.CollectAndExportAsTextAsync() to support metric data export via arbitrary custom endpoints.
- Now backward compatible with ASP.NET Core 2.1 (was 2.2+)
- Fix defect where histogram sum failed to increment.
- Fix ObjectDisposedException in MetricPusher.
- Added HTTP request metrics for ASP.NET Core.
- Somewhat more realistic examples in readme.
- Metrics exporter is now significantly more CPU and memory-efficient.
- Added Observe(value, count) to histogram metric, enabling multiple observations with the same value to be counted.
- Added CountExceptions() and MeasureInProgress() helper extensions.
- Adjusted API to better conform to Prometheus client library guidelines in terms of default values.
- Breaking change: assemblies are now strong-named.
- Breaking change: removed "windows" from built-in metric names as they are not Windows-specific.
- Breaking change: removed support for protobuf export format (it is no longer used by Prometheus).
- Breaking change: API surface cleaned up, removed some legacy methods, made many internal types actually internal.
- Breaking change: "on demand collectors" concept replaced with simpler "before collect callbacks". Works the same, just less code needed to use it and fewer possible error conditions.
- Breaking change: removed support for "custom collectors", as this was a very special use case that did not benefit at all from the main functionality of the library. Just generate a Prometheus exporter output document yourself if you need to export arbitrary data.
- Fixed wrong case used for metric type in the export data format. Should always be lowercase. #96
- Fixed potential conflict when using pushgateway and also other exporter libraries (see #89)
- Various minor fixes (see issues on GitHub for details).
- Add MetricOptions and subclasses for more extensible API (old API surface remains available)
- Add SuppressInitialValue to metric configuration (ref https://www.robustperception.io/existential-issues-with-metrics/)
- Add .WithLabels() as alternative to .Labels() for fewer annoying Intellisense conflicts.
- Targeting .NET Standard 2.0 as minimum version (.NET Framework 4.6.1, .NET Core 2.0 and Mono 5.4)
- Added ASP.NET Core middlware
- Added possibility to signal a failed scrape from on-demand collectors
- Removed dependency on Reactive Extensions
- Minor breaking changes to API
- Performance improvements for hot-path code
- Removed mostly obsolete PerfCounterCollector class
- Fixed NuGet package contents to remove assemblies from dependencies
- Various minor fixes (see issues on GitHub for details)
- Added support for .NET 4.5 using System.Reactive 3.1.1.
- .NET 4.0 support continues to target Rx 2.5
- Fixed MetricPusher not flushing metrics when stopped
- Fixed label values escaping for ASCII formatter
- PushGateway support
- Various internal improvements (replaced locks with Interlocked operations)
- Fixed some metrics not updating, added process ID metric
- Replaced lock statements in Counter and Gauge with CAS
- optionally use https in MetricServer
- using UTF-8 in text formatter
- catching exceptions in MetricServer http loop
- disposing of MetricServer loop on Stop()
- Renamed some metric names to be in-line with prometheus guidelines (breaking change as far as the exported metrics are concerned)
- Add CPU, num handles, start time, num threads metrics to dot net stats collector
- Made DotNetStatsCollector default (previously it was PerfCounterCollector)
- Summary metric ported from go
- Fix header writing order
- Generalise scraping so it can be called externally without using the embedded http handler
- Introduced interfaces for all the metrics to make unlabelled collectors and their children polymorph
- Added the notion of OnDemandCollectors + a DotNetStatsCollector to avoid having to use .net perf counters
- Do not create unlabelled metric if label names are specified
- Allow specifying hostname in URL
- Fix null ref exception if 'Accept' header is not specified
* 0.0.3 - initial version
Showing the top 2 GitHub repositories that depend on prometheus-net.AspNetCore:
Our flagship .NET Core Ethereum client for Linux, Windows, MacOs - full and actively developed
Exposes .NET core runtime metrics (GC, JIT, lock contention, thread pool) using the prometheus-net package