Changes marked with [bolt] are breaking changes relative to previous versions of the spec.
A full list of changes may be found on the MicroProfile Metrics 2.3 Milestone
-
Introduced a new base metric derived from RESTful stats into the base scope.
-
rest.request
: Tracks the total count of requests and total elapsed time spent at the REST endpoint
-
-
Introduced the simple timer (
@SimplyTimed
) metric. (#496) -
The API code no longer requires a correctly configured MP Config implementation to be available at runtime, so it is possible to slim down deployments if MP Config is not necessary (#466)
A full list of changes may be found on the MicroProfile Metrics 2.2.1 Milestone
-
Reverted a problematic change from 2.1 where Gauges were required to return subclasses of
java.lang.Number
-
Reverted a problematic change from 2.1 where Gauges were required to return subclasses of
java.lang.Number
-
(2.2.1) Added ProcessCpuTime as a new optional base metric. (#480)
-
(2.2.1) Added ProcessCpuTime as a new optional base metric. (#480)
A full list of changes may be found on the MicroProfile Metrics 2.1 Milestone and MicroProfile Metrics 2.1.1 Milestone
-
(2.1.1) Added ProcessCpuTime as a new optional base metric. (#454)
-
Clarified in the API code that Gauges must return values that extend
java.lang.Number
. [NOTE: this caused issues with backward compatibility and was reverted in 2.2] (#304) -
Clarified that implementations can, for JSON export of scopes containing no metrics, omit them, or that they can be present with an empty value. (#416)
-
Clarified that metrics should not be created for private methods when a class is annotated (the TCK asserted this in 2.0 anyway) (#416)
-
Added the
reusable(boolean)
method for MetadataBuilder (#407)
-
(2.1.1) Added ProcessCpuTime as a new optional base metric. (#454)
-
Clarified that metric registry implementations are required to be thread-safe. (#300)
-
Clarified that implementations can, for JSON export of scopes containing no metrics, omit them, or that they can be present with an empty value. (#416)
-
Clarified that metrics should not be created for private methods when a class is annotated (the TCK asserted this in 2.0 anyway) (#416)
-
Added some text to the specification about programmatic creation of metrics (without annotations) (#399)
-
Explicitly excluded the transitive dependency on
javax.el-api
from the build of the specification. It wasn’t actually used anywhere in the build so there should be no impact. Implementations can still support the Expression Language if they choose to. (#417)
A full list of changes may be found on the MicroProfile Metrics 2.0 Milestone and MicroProfile Metrics 2.0.1 Milestone and MicroProfile Metrics 2.0.2 Milestone
-
[bolt] Refactoring of Counters, as the old
@Counted
was misleading in practice. (#290)-
Counters via
@Counted
are now always monotonic, themonotonic
attribute is gone. TheCounted
interface lost thedec()
methods. -
Former non-monotonic counters are now
@ConcurrentGauge
and also in the output reported as gauges. (#290) -
See Migration hints about migration of applications using MicroProfile Metrics. (#290)
-
-
Removed unnecessary
@InterceptorBinding
annotation fromorg.eclipse.microprofile.metrics.annotation.Metric
. (#188) -
[bolt] Removed deprecated
org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata)
(#268) -
[bolt]
Metadata
is now immutable and built via aMetadataBuilder
. (#228) -
Introduced a Tag object which represents a singular tag key/value pair. (#238)
-
MetricFilter modified to filter with MetricID instead of name. (#238)
-
(2.0.3) Added ProcessCpuTime as a new optional base metric. (#454)
-
[bolt]
Metadata
is now immutable and built via aMetadataBuilder
. (#228) -
[bolt] Metrics are now uniquely identified by a MetricID (combination of the metric’s name and tags). (#238)
-
MetricFilter modified to filter with MetricID instead of name. (#238)
-
The 'Metadata' is mapped to a unique metric name in the
MetricRegistry
and this relationship is immutable. (#238) -
Tag key names for labels are restricted to match the regex
[a-zA-Z_][a-zA-Z0-9_]*
. (#238) -
Tag values defined through MP_METRICS_TAGS must escape equal signs
=
and commas,
with a backslash\
. (#238) -
[bolt] JSON output format for GET requests now appends tags along with the metric in
metricName;tag=value;tag=value
format. JSON format for OPTIONS requests have been modified such that the 'tags' attribute is a list of nested lists which holds tags from different metrics that are associated with the metadata. (#381) -
OpenMetrics format - formerly called Prometheus format
-
[bolt] The default value of the
reusable
attribute for metric objects created programmatically (not via annotations) is nowtrue
(#328) -
[bolt] Some base metrics' names have changed to follow the convention of ending the name of accumulating counters with
total
. (#375) -
[bolt] Some base metrics' types have changed from Counter to Gauge since Counters must now count monotonically. (#375)
-
[bolt] Some base metrics' names have changed because they now use tags to distinguish metrics for multiple JVM objects. For example, each existing garbage collector now has its own
gc.total
metric with the name of the garbage collector being in a tag. Names of some base metrics in the OpenMetrics output are also affected by the removal of conversion from camelCase to snake_case. (#375)
-
(2.0.3) Added ProcessCpuTime as a new optional base metric. (#454)
-
[bolt] Refactoring of Counters, as the old
@Counted
was misleading in practice. (#290)-
Counters via
@Counted
are now always monotonic, themonotonic
attribute is gone. TheCounted
interface lost thedec()
methods. -
Former non-monotonic counters are now
@ConcurrentGauge
and also in the output reported as gauges. (#290) -
See Migration hints about migration of applications using MicroProfile Metrics. (#290)
-
-
[bolt] Metrics are now uniquely identified by a MetricID (combination of the metric’s name and tags). (#238)
-
The 'Metadata' is mapped to a unique metric name in the
MetricRegistry
and this relationship is immutable. (#238) -
Tag key names for labels are restricted to match the regex
[a-zA-Z_][a-zA-Z0-9_]*
. (#238) -
Tag values defined through MP_METRICS_TAGS must escape equal signs
=
and commas,
with a backslash\
. (#238) -
OpenMetrics format - formerly called Prometheus format
-
[bolt] The default value of the
reusable
attribute for metric objects created programmatically (not via annotations) is nowtrue
(#328) -
[bolt] Some base metrics' names have changed to follow the convention of ending the name of accumulating counters with
total
. (#375) -
[bolt] Some base metrics' types have changed from Counter to Gauge since Counters must now count monotonically. (#375)
-
[bolt] Some base metrics' names have changed because they now use tags to distinguish metrics for multiple JVM objects. For example, each existing garbage collector now has its own
gc.total
metric with the name of the garbage collector being in a tag. Names of some base metrics in the OpenMetrics output are also affected by the removal of conversion from camelCase to snake_case. (#375) -
Added a set of recommendations how application servers with multiple deployed applications should behave if they support MP Metrics. (#240)
A full list of changes may be found on the MicroProfile Metrics 1.1 Milestone
-
org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata)
is deprecated. Useorg.eclipse.microprofile.metrics.MetricRegistry.register(Metadata, Metric)
instead, whereMetadata
already has a field for the name.
-
org.eclipse.microprofile.metrics.MetricRegistry.register(String name, Metric, Metadata)
is deprecated. Useorg.eclipse.microprofile.metrics.MetricRegistry.register(Metadata, Metric)
instead, whereMetadata
already has a field for the name. -
Global tags are now supplied via the means of MicroProfile Config (the env variable is still valid). (#165)
-
Annotations and
Metadata
can now have a flagreusable
that indicates that the metric name can be registered more than once. Default isfalse
as in Metrics 1.0. See architecture.adoc.