Releases: prometheus/client_java
v1.3.4
What's Changed
- Add instrumentation for Guava & Caffeine to BOM by @der-eismann in #1175
- fix register part of documentation for caffeine & guava instrumentati… by @pheyken in #1203
- [prometheus-metrics-instrumentation-caffeine] implement getPrometheus… by @pheyken in #1206
- [prometheus-metrics-instrumentation-guava] implement getPrometheusNames by @pheyken in #1211
- make Protobuf optional by @zeitlinger in #1190
New Contributors
- @der-eismann made their first contribution in #1175
Full Changelog: v1.3.3...v1.3.4
v1.3.3
What's Changed
- Bump com.google.protobuf:protobuf-java from 4.28.2 to 4.28.3 by @dependabot in #1178
- Bump io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha from 2.8.0-alpha to 2.9.0-alpha by @dependabot in #1164
- avoid ConcurrentModificationException by @zeitlinger in #1191
- revert incompatible api change by @zeitlinger in #1192
Full Changelog: v1.3.2...v1.3.3
v1.3.2
What's Changed
- Simple MetricsSnapshot performance change by @dhoard in #963
- feat: add bearerToken builder to pushgateway exporter by @FUSAKLA in #968
- Fix UnknownDataPointSnapshot constructor by @mimaison in #977
- Added methods by @dhoard in #978
- Updated CircleCI image by @dhoard in #982
- Change links on front page to be relative by @MaBiConti in #981
- add support for guava instrumentation with 1.X.X by @pheyken in #979
- add support for caffeine instrumentation with 1.X.X by @pheyken in #983
- Nullify noLabels in StatefulMetric during clear() to prevent no-label inc to stop working by @iaco86 in #972
- Add abstract build method to MetricSnapshot.Builder by @mimaison in #969
- Fix PrometheusNaming.sanitizeMetricName() methods by @mimaison in #975
- additional improve MetricSnapshots.Builder performance by @burov4j in #985
- Make JvmMetrics.register idempotent with the default registry by @mimaison in #987
- http server, add subject.doAs handler wrapper for exchange attribute … by @gtully in #1089
- fix buffer sync logic using modern concurrency primitives by @zeitlinger in #991
- use otel autoconfigure by @zeitlinger in #1147
- Add clear() method into PrometheusRegistry to unregister all collectors by @zeitlinger in #1158
New Contributors
- @FUSAKLA made their first contribution in #968
- @mimaison made their first contribution in #977
- @MaBiConti made their first contribution in #981
- @pheyken made their first contribution in #979
- @iaco86 made their first contribution in #972
- @burov4j made their first contribution in #985
- @zeitlinger made their first contribution in #988
- @gtully made their first contribution in #1089
Full Changelog: v1.3.1...v1.3.2
1.3.1 / 2024-05-23
This is just a minor update to the 1.3.0 release:
With the previous releases it was possible to create illegal UNIT
names, like new Unit("&^$")
or new Unit("total")
.
This release prevents that (throwing an IllegalArgumentException
), and also adds a method PrometheusNaming.sanitizeUnitName(name)
for converting arbitrary strings into valid Prometheus UNIT
names.
1.3.0 / 2024-05-16
This is the 1.3.0 release of the Prometheus Java client library.
The headline feature is the new prometheus-metrics-exporter-pushgateway
module. See https://prometheus.github.io/client_java/exporters/pushgateway/ for documentation.
- [FEATURE] Port PushGateway to client_java 1.x
- [ENHANCEMENT] Run
HTTPServer
as a Daemon Thread. Thanks @mberndt123. - [BUGFIX] Fix naming issue in the Dropwizard 5 exporter. Thanks @kingster
- [BUGFIX] Allow metric names with single character
- [ENHANCEMENT] Fix flaky tests. Thanks @dhoard for extensively load testing our build.
- [ENHANCEMENT] Enforce unit suffix in metric name when unit is not null. Thanks @jonatan-ivanov
- [ENHANCEMENT] Explicit DuplicateLabelsException when creating MetricSnapshot
Thanks to everyone who contributed.
1.2.1 / 2024-04-23
Minor release to help Spring Boot adopt client_java
1.x in the Micrometer Prometheus registry.
- [ENHANCEMENT] add a method for initializing
PrometheusProperties
with an external properties map. This can be used to load properties from Spring configuration. Thanks @jonatan-ivanov - [ENHANCEMENT] remove
import
statement forSpanContextSupplier
so that the code still runs if theprometheus-metrics-tracer-initializer
dependency is excluded from the classpath (Micrometer implements it's own SpanContextSupplier and doesn't need the dependency). - [BUGFIX] fix Javadoc links. Thanks @shakuzen.
1.2.0 / 2024-03-22
The 1.2.0 release has some nice features and enhancements. Thanks a lot to everyone who contributed.
- [FEATURE] new Dropwizard instrumentation module
prometheus-metrics-instrumentation-dropwizard5
. Thanks @kingster - [FEATURE] new Javax exporter servlet module
prometheus-metrics-exporter-servlet-javax
. Thanks @kingster - [FEATURE] expose native memory metrics when the JVM was started with
-XX:NativeMemoryTracking=summary
. Thanks @meier-christoph - [FEATURE] minor API additions:
get()
methods forCounter
andGauge
,clear()
method for all metrics. - [FEATURE] add Exemplars to Histogram
_count
if the config optionexemplarsOnAllMetricTypes
is enabled. - [ENHANCEMENT] remove Exemplars from Summary
_sum
, because it's sufficient to have Exemplars on_count
. - [BUGFIX] error handling when the HTTP connection closes unexpectedly during scrape. Thanks @dhoard
- [ENHANCEMENT] add BOM (bill of materials) module
prometheus-metrics-bom
.
1.1.0 / 2023-11-12
This release contains lots of smaller fixes and enhancements to the 1.0.0 release. Thanks a lot to everyone who contributed.
- [ENHANCEMENT] Avoid duplicate call to the
scrape()
method in the defaultCollector
implementation. This does not affect the core metrics, because the core metrics overridegetPrometheusName()
, so they don't use the default implementation. - [BUGFIX] Fix unit for
process_cpu_seconds_total
#881. Thanks @yrn1. - [ENHANCEMENT] Add automatic module names #871. This removes a warning for users of Java 9 modules. Thanks @solomax.
- [FEATURE] Add API to support the multi target exporter pattern #873. Thanks @ganzuoni.
- [ENHANCEMENT] Add Exemplar support for the OpenTelemetry OTLP exporter #883. Thanks @0x006EA1E5.
- [BUGIFX] Fix histogram bucket boundaries in the
prometheus-metrics-simpleclient-bridge
#887. Thanks @turchenkoalex. - [BUGFIX] Fix sliding window for Summary metrics #894. Thanks @yrn1.
- [ENHANCEMENT] Add
equals()
andhashCode()
toUnit
#897. Thanks @dhoard. - [ENHANCEMENT] Bump dependency versions #899.
1.0.0 / 2023-09-27
The Prometheus Java client 1.0.0 is available!
The Prometheus Java client 1.0.0 release is a complete rewrite of the underlying data model.
The main new features are:
- Prometheus native histograms: Support for the new Prometheus histogram type.
- OpenTelemetry Exporter: Push metrics in OTLP format to an OpenTelemetry endpoint.
- Runtime configuration: Configure metrics, exporters, and more at runtime using a properties file or system properties.
Documentation and Examples
We launched a new documentation page on https://prometheus.github.io/client_java/, and created an examples/ directory with end-to-end scenarios (Docker compose) illustrating new features.
Performance Benchmarks
Initial performance benchmarks are looking great: All core metric types (including native histograms) allow concurrent updates, so if you instrument a performance critical Web service that utilizes all processor cores in parallel the metrics library will not introduce additional synchronization. See Javadoc comments in benchmarks/ for benchmark results.
More Info
The Grafana Labs Blog has a post Introducing the Prometheus Java Client 1.0.0 with a good overview of the release.
There will also be a presentation at the PromCon conference on 29 Sep 2023. Tune in to the live stream on https://promcon.io or watch the recording on YouTube.
For users of the 0.16.0 version and older
Updating to the 1.0.0 version is a breaking change. However, there's a prometheus-metrics-simpleclient-bridge
module available that allows you to use your existing simpleclient 0.16.0 metrics with the new 1.0.0 PrometheusRegistry
. So you don't need to upgrade your instrumentation code, you can keep using your existing metrics. See the simpleclient section on the new docs page.
The pre 1.0.0 code is now maintained on the simpleclient feature branch.
Not all simpleclient
modules from 0.16.0 are included in the initial 1.0.0 release. Over the next couple of weeks we will work on porting the remaining modules, starting with pushgateway
and the Servlet filter.
1.0.0-beta-1 / 2023-09-16
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.