Skip to content

Releases: prometheus/client_java

1.0.0-beta-1 / 2023-09-16

16 Sep 21:27
Compare
Choose a tag to compare
Pre-release

The first beta of the upcoming Prometheus metrics library 1.0.0 is available!

It's a major breaking change, because we refactored the builder pattern to be aligned with Lombok conventions. Example of the new API:

Counter counter = Counter.builder()
    .name("events_total")
    .help("total number of events")
    .labelNames("status")
    .register();

This replaces the verbose builders from the alpha releases:

// old API, no longer available
Counter counter = Counter.newBuilder()
    .withName("events_total")
    .withHelp("total number of events")
    .withLabelNames("status")
    .register();

Moreover, we started publishing docs on https://prometheus.github.io/client_java/.

If you want to get started, the new docs have a quickstart guide: https://prometheus.github.io/client_java/getting-started/quickstart/.

The target is to finalize the docs and the 1.0.0 release before PromCon, which is 28/29 September 2023. We do not expect any more breaking changes, except for smaller things that come up while writing documentation.

1.0.0-alpha-5 / 2023-09-13

13 Sep 20:43
Compare
Choose a tag to compare
Pre-release

This is the current pre-release of the upcoming 1.0.0 version.

It adds the prometheus-metrics-simpleclinet-bridge module, which is the backwards-compatibility module for existing simpleclient metrics (client_java <= 0.16.0).

To include all metrics from the default simpliclient CollectorRegistry in the new default PrometheusRegistry, just add this line:

SimpleclientCollector
        .newBuilder()
        .register();

See the examples/example-simpleclient-bridge on the 1.0.x branch.

This completes the initial functionality for the 1.0.0 release. Next step is some refactoring (we want to rename all Builder methods to Lombok naming conventions because that's what people are used to from Spring). And finally, we need to add a lot of documentation!

1.0.0-alpha-4 / 2023-09-07

07 Sep 11:20
Compare
Choose a tag to compare
Pre-release

This is the current pre-release for the upcoming 1.0.0 version.

It adds the prometheus-metrics-instrumentation-jvm module, which is a port of the simpleclient default exports to the new metrics library:

JvmMetrics
        .newBuilder()
        .register();

If a unit is present, the new metrics library requires the unit to be the last part of the metric name, as defined in Prometheus Metric and Label Naming. Therefore we had to rename a few default metrics:

  • jvm_memory_bytes_init -> jvm_memory_init_bytes
  • jvm_memory_bytes_committed -> jvm_memory_committed_bytes
  • jvm_memory_bytes_max -> jvm_memory_max_bytes
  • jvm_memory_bytes_used -> jvm_memory_used_bytes
  • jvm_memory_pool_bytes_init -> jvm_memory_pool_init_bytes
  • jvm_memory_pool_bytes_committed -> jvm_memory_pool_committed_bytes
  • jvm_memory_pool_bytes_max -> jvm_memory_pool_max_bytes
  • jvm_memory_pool_bytes_used -> jvm_memory_pool_used_bytes

Apart from that, jvm_info was renamed to jvm_runtime_info.

If these breaking changes are an issue: There will be a compatibility module that will allow you to use the old simpleclient default exports with the new metrics library.

There still isn't much documentation yet, but for each new module there's an end-to-end example and a README in the examples/ directory (on the 1.0.x branch).

The next features on the roadmap towards 1.0.0 is a backwards-compatibility module for existing simpleclient.

1.0.0-alpha-3 / 2023-08-29

29 Aug 21:32
Compare
Choose a tag to compare
Pre-release

This is the current pre-release for the upcoming 1.0.0 version.

It adds two major new modules:

  • prometheus-metrics-exporter-httpserver is a built-in HTTP server for exposing Promtheus metrics (this is a port of simpleclient_httpserver).
  • prometheus-metrics-exporter-opentelemetry is an exporter for pushing metrics to an OpenTelemetry endpoint in OTLP format.

In addition to these new features, there was a lot of internal refactoring.

There isn't much documentation yet, but for each new module there's an end-to-end example and a README in the examples/ directory (on the 1.0.x branch).

The next features on the roadmap towards 1.0.0 are a port of the built-in JVM metrics, and a backwards-compatibility module for existing simpleclient.

1.0.0-alpha-2 / 2023-07-27

27 Jul 15:23
Compare
Choose a tag to compare
Pre-release

This release is an internal refactoring to prepare for better integration with OpenTelemetry metrics in the future.

User facing functionality like API and exposition formats are the same as in 1.0.0-alpha-1.

We also started adding more documentation

The source code is on the 1.0.x branch.

1.0.0-alpha-1 / 2023-07-17

17 Jul 13:29
Compare
Choose a tag to compare
Pre-release

First pre-release of the upcoming Prometheus metrics library. The main feature is support for the new Prometheus native histograms. This release contains the following modules:

  • prometheus-metrics-core - core metric library.
  • prometheus-metrics-model - data model for read-only immutable Prometheus metrics snapshots.
  • prometheus-metrics-exposition-formats - text format, OpenMetrics format, Prometheus protobuf format.
  • prometheus-metrics-config - runtime configuration, e.g. for configuring new histogram buckets at runtime.
  • prometheus-metrics-exporter-servlet-jakarta - exporter servlet.

These modules are currently independent of the existing simpleclient modules. Before releasing 1.0.0 we will implement a bridge from simpleclient_* to prometheus-metrics-* for backwards compatibility.

The source code is on the 1.0.x branch.

There is a tomcat-servlet-example project for trying the new metrics library (see README).

0.16.0 / 2022-06-15

15 Jun 22:08
Compare
Choose a tag to compare

[ENHANCEMENT] Environment variable PROMETHEUS_DISABLE_CREATED_SERIES=true for disabling _created metrics (#791). Thanks @mindw
[ENHANCEMENT] Support for OpenTelemetry trace sampling: Only traces that are sampled will be used as exemplars (#766). Thanks @fscellos
[ENHANCEMENT] Handle thread IDs <= 0. Apparently Apache Zookeeper generates negative thread IDs, which causes issues in jmx_exporter (#784). Thanks @dhoard
[ENHANCEMENT] Mark opentelemtry-api as optional to make it an optional dependency in OSGi (#790). Thanks @adessaigne.
[ENHANCEMENT] Move servlet adapters to an internal package to avoid duplicating classes when building OSGi bundles (#789). Thanks @adessaigne
[ENHANCEMENT] Extend the API of the HTTPServer.Builder to allow custom ExecutorService instances (#756). Thanks @dhoard
[ENHANCEMENT] Reduce the number of core threads in HTTPServer from 5 to 1. The HTTPServer will still start up to 5 threads on demand if there are parallel requests, but it will use only 1 thread as long as requests are sequential (#786).
[ENHANCEMENT] Optimize metric name sanitization: Replace the regular expression with a hard-coded optimized algorithm to improve performance (#777). Thanks @fwbrasil
[BUGFIX] Fix missing Dropwizard metrics in Vertx (#780). Thanks @yaronel.
[BUGFIX] Fix incorrect buffer size in the Servlet exporter (#794). Thanks @GreenRover for finding the issue and @dhoard for the fix.
[BUGFIX] Fix sample name filter for the JMX metric jvm_memory_bytes_committed (#768). Thanks @SvenssonWeb
[ENHANCEMENT] Lots of dependency version bumps.

0.15.0 / 2022-02-05

05 Feb 22:42
Compare
Choose a tag to compare

Major refactoring of Quantiles in Summary metrics. This will make them faster and use less memory. The new implementation also supports two corner cases that were not possible before: You can now use .quantile(0, 0) to track the minimum observed value and .quantile(1, 0) to track the maximum observed value. Thanks a lot @DieBauer! #755

In addition to that the release includes:

[ENHANCEMENT] Lots of dependency version bumps.
[BUGFIX] Apply ServletConfig during Servlet initialization in simpleclient_servlet and simpleclient_servlet_jakarta #739
[BUGFIX] HTTPServer: Don't send a Content-Length header when Transfer-Encoding is chunked #738. Thanks @dhoard
[BUGFIX] simpleclient_log4j set the log4j dependency scope as provided so that users don't accidentally pull the log4j version used in client_java. Note: This module is for monitoring log4j version 1, in simpleclient_log4j2 the dependency is already provided.
[BUGFIX] simpleclient_dropwizard set the Dropwizard dependency scope as provided so that users don't accidentally pull the Dropwizard version used in client_java.

0.14.1 / 2021-12-19

19 Dec 11:46
Compare
Choose a tag to compare

Bump the log4j version in simpleclient_log4j2 to 2.17.0. Apart from that this release is identical to 0.14.0.

0.14.0 / 2021-12-18

18 Dec 17:24
Compare
Choose a tag to compare

Yet another log4j version update in simpleclient_log4j2: This time to 2.16.0. Note that the log4j dependency in simpleclient_log4j2 has scope provided, i.e. simpleclient_log4j2 does not ship with log4j. simpleclient_log4j2 uses whatever log4j version the monitored application provides at runtime. Updating the log4j dependency in simpleclient_log4j2 helps getting rid of security scanner warnings (see #733), but in order to eliminate the log4j vulnerability you must make sure that the application you monitor ships with an up-to-date log4j version.

Apart from the log4j update we have a new feature:

[ENHANCEMENT] The HTTPServer can now be configured to use SSL (#695). Thanks @dhoard.