Metrics 3.0
This is the release for MP Metrics 3.0, with the following details.
A full list of changes delivered in the 3.0 release can be found at MicroProfile Metrics 3.0 Milestone.
Incompatible Changes
-
Removed everything related to reusability from the API code. All metrics are now considered reusable.
-
CDI producers annotated with @Metric no longer trigger metric registration. If these metrics should be registered, it must be done differently (for example using the MetricRegistry methods)
-
MetricRegistry changed from abstract class to interface
-
Changed Timer.update(long duration, java.util.concurrent.TimeUnit) to Timer.update(java.time.Duration duration)
-
Removed MetadataBuilder.withOptional* methods, the remaining with* methods do accept null value (considered not present) except withName which does not accept null or ""
-
Changed Metadata.getDescription() and Metadata.getUnit() to return String instead of Optional<String> and added Metadata.description() and Metadata.unit() that return Optional<String>
API/SPI Changes
-
Updated dependencies scopes and versions to align with Jakarta EE 8
-
MetricRegistry changed from abstract class to interface
-
Added the MetricRegistry.getType() method
-
Added the MetricRegistry.counter(MetricID) method
-
Added the MetricRegistry.concurrentGauge(MetricID) method
-
Added the MetricRegistry.gauge(String, Object, Function, Tag[]) method
-
Added the MetricRegistry.gauge(MetricID, Object, Function) method
-
Added the MetricRegistry.gauge(Metadata, Object, Function, Tag[]) method
-
Added the MetricRegistry.gauge(String, Supplier, Tag[]) method
-
Added the MetricRegistry.gauge(MetricID, Supplier) method
-
Added the MetricRegistry.gauge(Metadata), Supplier, Tag[]) method
-
Added the MetricRegistry.histogram(MetricID) method
-
Added the MetricRegistry.meter(MetricID) method
-
Added the MetricRegistry.timer(MetricID) method
-
Added the MetricRegistry.simpleTimer(MetricID) method
-
Added the MetricRegistry.getMetric(MetricID) method
-
Added the MetricRegistry.getMetric(MetricID metricID, Class) method
-
Added the MetricRegistry.getCounter(MetricID) method
-
Added the MetricRegistry.getConcurrentGauge(MetricID) method
-
Added the MetricRegistry.getGauge(MetricID) method
-
Added the MetricRegistry.getHistogram(MetricID) method
-
Added the MetricRegistry.getMeter(MetricID) method
-
Added the MetricRegistry.getTimer(MetricID) method
-
Added the MetricRegistry.getSimpleTimer(MetricID) method
-
Added the MetricRegistry.getMetadata(String) method
-
Added the MetricRegistry.getMetrics(MetricFilter) method
-
Added the MetricRegistry.getMetrics(Class, MetricFilter) method
-
Added SimpleTimer.getMinTimeDuration() and SimpleTimer.getMaxTimeDuration() methods which return a java.time.Duration object (#523)
-
Timer class updated (#524)
-
Changed Timer.update(long duration, java.util.concurrent.TimeUnit) to Timer.update(java.time.Duration duration)
-
Added Timer.getElapsedTime() which returns java.time.Duration
-
-
Removed MetadataBuilder.withOptional* methods
-
Global tags and _app tag are no longer handled automatically by the MetricID class, the implementation is expected to add them by itself, for example during metric export
-
Added the Histogram.getSum() which returns long (#597)
Functional Changes
-
Simple Timer metrics now track the highest and lowest recorded timing duration of the previous completed minute (#523)
-
Timer now exposes total elapsed time duration as a metric value. (#524)
-
Clarified that the existing REST metric REST.request will not monitor and track a REST request to a REST endpoint if an unmapped exception occurs.
-
Introduced a new base REST metric REST.request.unmappedException.total that counts the occurrences of unmapped exceptions for each REST endpoint (#533)
-
Histogram now exposes the total sum of recorded values as a sum value (#597)
-
In JSON format it is exposed as a sum value
-
In OpenMetrics format it is exposed as a sum value under the summary type
-
-
Timer now exposes the elapsedTime metric value as sum under the summary type in OpenMetrics format (#597)