Releases: kumuluz/kumuluzee-metrics
v3.0.0
We are excited to announce a new major version of KumuluzEE Metrics - 3.0.0. This release implements the MicroProfile Metrics 3.0 and introduces a number of breaking changes.
Everything related to reusability is now gone. All metrics are now considered reusable. This reduces complexity and keeps things simple. CDI produces annotated with @Metric
now no longer trigger metric registration - these metrics should now be registered manually.
The MetricRegistry API has changed. It is no longer abstract class
but interface
and a number of helper methods have been added (see the MicroProfile specification for more details). The Timer.update
method signature has been changed from long
+ TimeUnit
to Duration
. The Metadata
and MetadataBuilder
API has also been changed - it is now more consistent regarding the Optional
class usage.
There were also some additions to metric types. Histograms now track sum - the total of all submitted values and Timer exposes the total elapsed time. Simple Timer also received updates and now tracks the highest and lowest duration of the previous minute. These additions are exposed in both the Prometheus (OpenMetrics) and JSON format.
The extension has also been updated to the new core (KumuluzEE 4) and supports Java 17 and 18. Since KumuluzEE 4 drops support for Java 1.8, the support was also removed in KumuluzEE Metrics 3.0.0
Features
- Removed
reusable
from annotations - Added sum to Histogram
- Added total elapsed time to Timer
- Added min and max in previous completed minute to Simple Timer
Enhancements
- KumuluzEE Config MP is no longer required dependency but optional
- Implemented breaking changes from the MicroProfile Metrics spec on
MetricRegistry
,Metadata
andMetadataBuilder
- Cleaned up and improved readability
Bugs
- Added support for the CDI
@Stereotype
annotation
v2.3.0
This release implements the MicroProfile Metrics 2.3 specification.
Features
- Introduced the simple timer (
@SimplyTimed
) metric.
Enhancements
- The API code no longer requires a correctly configured MP Config implementation to be available at runtime.
v2.2.1
v2.1.0
v2.0.1
We are happy to announce a new major version of KumuluzEE Metrics - 2.0.1. This release implements the MicroProfile Metrics 2.0. Programming interface and REST format include a number of breaking changes which integrate the extension even better with popular cloud-native metric processing tools like Prometheus.
In order to avoid confusion, the monotonic
flag has been removed from the @Counted
annotation. All counters are now by default monotonic (increasing only). A new metric type has been added in order to compensate for monotonic
flag removal - ConcurrentGauge
(with accompanying annotation @ConcurrentGauge
). This metric type also reports the minimum and maximum value reached in the previous minute.
The Metadata
object used when programmatically creating metrics is now immutable and can be created by using the builder pattern (Metadata.builder()
).
Following the Prometheus/OpenMetrics convention, a metric is now uniquely identifiable using a combination of both its name and tags (as opposed to just name). This combination is now represented as an MetricID
object. Most of the MetricRegistry
API has been updated accordingly.
JSON output format now appends tags to the end of the metrics names, allowing metrics with the same name to be reported at the same time. Prometheus output format was also changed in order to better respect the Prometheus best practices.
Features
- Implemented
ConcurrentGauge
and removed themonotonic
flag from counters. - Made metrics identifiable by name and tags (
MetricID
). - Updated API for the
MetricID
change. - Updated JSON and Prometheus serializers.
Enhancements
- Refactored
Metadata
usage to the immutable implementation. - Updated Logs and Logstash reporters to use the new JSON format.
- Improved performance of the
MetricRegistry
implementation. - Updated dependency versions.
v1.1.3
We are announcing a minor release of KumuluzEE Metrics. This release fixes race conditions when registering metrics and fixes URL parsing when servlet context is not empty.
Bugs
- Fixed URL parsing when servlet context is not empty
- Fixed race condition when registering metrics
v1.1.2
We are announcing a minor release of KumuluzEE Metrics. This release brings some important bug fixes and adds support for Java 9+. Dependencies have also been updated to their latest versions.
Enhancements
- Added Java 9+ support
- Updated dependency versions
Bugs
- Fixed non reusable metric bug
- Fixed warnings at application startup
- Cleaned up initialization logic
v1.1.1
We're happy to announce the release of KumuluzEE Metrics 1.1.1. This release implements the MicroProfile Metrics 1.1.1 specification, which brings a new reusable
flag, integration with KumuluzEE MicroProfile Config and some general improvements to the programmatic API.
The reusable
flags allows a metric with the same name to be used in different places. For example, to count invocations of two different methods with a single counter, you can now annotate both methods with the annotation @Counted(name = "countMe", absolute = true, reusable = true)
. If the reusable
flag in this example was not set to true
, the deployment would fire an IllegalArgumentException
. This restriction is done to prevent hard to spot copy and paste errors.
KumuluzEE Metrics is now integrated with the KumuluzEE MicroProfile Config implementation. Currently only one configuration property is used. The MP_METRICS_TAGS
configuration property defines the global tags that get added to each metric's metadata.
The method MetricRegistry.register(String name, Metric, Metadata)
has been deprecated in favour of the method MetricRegistry.register(Metadata, Metric)
, since metric's name is already supplied with its metadata and the parameter name
is not necessary.
Another major part of this release is the inclusion of MicroProfile TCK, which checks the implementation for compliance with the MicroProfile Metrics specification.
Features
reusable
flag added to the metric's metadata
Enhancements
- Integration with KumuluzEE MicroProfile Config
MetricRegistry.register(String name, Metric, Metadata)
deprecated in favour ofMetricRegistry.register(Metadata, Metric)
- Added MicroProfile TCK tests
v1.0.0
We're happy to announce the initial version of the KumuluzEE Metrics extension v1.0.0 for the KumuluzEE framework.
The extension brings full support for detailed live predefined and custom runtime metrics of a running microservice. The selected metrics can then be made available via an API in a number of formats in order to make them available for collection by your tool of choice.
The extension comes with a full implementation of the MicroProfile Metrics 1.0 specification for standard and portable collection of metrics for Java microservices. Additionally KumuluzEE Metrics also comes with support for various reporters, that enable you to periodically report or send the metric information to an external system. With this version, we're releasing support for the standard logging framework (logs
) and Logstash (logstash
). Both of which can be added or removed separately. More reporters are planned for future versions.
We're excited to get the extension into your hands!