Skip to content

Releases: kumuluz/kumuluzee-metrics

v3.0.0

05 Dec 14:55
Compare
Choose a tag to compare

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 and MetadataBuilder
  • Cleaned up and improved readability

Bugs

  • Added support for the CDI @Stereotype annotation

v2.3.0

16 Mar 10:32
Compare
Choose a tag to compare

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

04 Feb 12:19
Compare
Choose a tag to compare

This release implements the MicroProfile Metrics 2.2.1.

Enhancements

  • Reverted a problematic change from 2.1 where Gauges were required to return subclasses of java.lang.Number

v2.1.0

04 Feb 07:50
Compare
Choose a tag to compare

This release implements the MicroProfile Metrics 2.1.

Enhancements

  • Clarified in the API code that Gauges must return values that extend java.lang.Number.
  • Added the reusable(boolean) method for MetadataBuilder.

v2.0.1

08 Aug 12:19
Compare
Choose a tag to compare

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 the monotonic 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

28 Jun 14:11
Compare
Choose a tag to compare

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

30 Jan 09:33
Compare
Choose a tag to compare

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

20 Jun 11:35
Compare
Choose a tag to compare

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 of MetricRegistry.register(Metadata, Metric)
  • Added MicroProfile TCK tests

v1.0.0

19 Dec 12:32
v1.0.0
4022209
Compare
Choose a tag to compare

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!