Highlights
Performance
- Improve histogram/summary performance under contention (#1794) by @jack-berg — Significant throughput improvements for high-contention scenarios by striping
observationCountacross multiple instances. Benchmarks show prometheusClassic improving from ~5,126 ops/s to ~14,624 ops/s (~185% improvement) and prometheusNative from ~3,854 ops/s to ~7,406 ops/s (~92% improvement).
Configuration
- Support environment variables in properties (#1828) by @zeitlinger — Adds environment variable support for configuration (e.g.,
IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORT) while maintaining full backward compatibility. Also introduces snake_case property naming (recommended) while keeping camelCase working.
API
- Allow metrics with the same name but different labels (#1800) by @jaydeluca — Enables registration of metrics with the same name, with validation at both registration and scrape time.
- Add stable Metrics class to decouple consumers from protobuf version (#1873) by @zeitlinger — Introduces a stable
Metricsclass so consumer code no longer needs import updates on protobuf upgrades.
OpenTelemetry
- Add OTel support module and make examples standalone (#1868) by @zeitlinger — New
prometheus-metrics-otel-supportmodule that bundles the OTel SDK and Prometheus exporter as a single dependency. Examples are now standalone and can be copy-pasted directly. - Add docs and example for OTel JVM runtime metrics (#1861) by @zeitlinger
Exporters
- Add metricsHandlerPath and registerHealthHandler configuration options to HTTPServer (#1735) by @Donnerbart
- Disable compression in PrometheusScrapeHandler (#1691) by @Myllyenko — Adds ability to disable compression in
PrometheusScrapeHandler. - Prevent exception in HttpServer exporter when using custom root metrics path (#1772) by @Donnerbart
Instrumentation
- Add custom tags to JVM metrics (#1769) by @sibasispadhi
- Verify and document native histograms with custom buckets (NHCB) support (#1846) by @zeitlinger
What's Changed
🏕 Features
- Adding ability to disable compression in PrometheusScrapeHandler by @Myllyenko in #1691
- Add metricsHandlerPath and registerHealthHandler configuration options to HTTPServer by @Donnerbart in #1735
- Add custom tags to JVM metrics by @sibasispadhi in #1769
- Prevent exception in HttpServer exporter when using custom root metrics path by @Donnerbart in #1772
- Allow metrics with the same name different labels by @jaydeluca in #1800
- Improve histogram, summary performance under contention by striping observationCount by @jack-berg in #1794
- support environment variables in properties by @zeitlinger in #1828
- Verify and document native histograms with custom buckets (NHCB) support by @zeitlinger in #1846
- Remove help text validation by @jaydeluca in #1866
- Add docs and example for OTel JVM runtime metrics by @zeitlinger in #1861
- Add OTel support module and make examples standalone by @zeitlinger in #1868
- Add stable Metrics class to decouple consumers from protobuf version by @zeitlinger in #1873
🔧 Maintenance
- fix native test by @zeitlinger in #1729
- use graalvm version that renovate can update by @zeitlinger in #1733
- fix: update build command to include 'clean' for benchmarks by @zeitlinger in #1762
- fix blog post url by @zeitlinger in #1787
- Add test matrix for different java versions by @jaydeluca in #1781
- fix javadoc by @zeitlinger in #1809
- pom cleanup by @zeitlinger in #1810
- separate java update as graal is not working by @zeitlinger in #1811
- pin super linter by @zeitlinger in #1814
- improve code quality, part 1 by @zeitlinger in #1808
- make tests not public by @zeitlinger in #1818
- Make super-linter ARM friendly by @jaydeluca in #1817
- Run integration tests in matrix by @jaydeluca in #1802
- lint only modified links by @zeitlinger in #1819
- Run nightly benchmarks by @jaydeluca in #1803
- bundle renovate updates by @zeitlinger in #1829
- refactor: update exception handling to use specific exception types by @zeitlinger in #1843
- Reduce flakyness of testExemplarsClassicHistogram by @jaydeluca in #1842
- fix and test gh pages by @zeitlinger in #1845
- address todos by @zeitlinger in #1832
- re-use super linter script by @zeitlinger in #1847
- clean up link checking by @zeitlinger in #1850
- add branch coverage, better javadoc lints by @zeitlinger in #1851
- fix(renovate): enable updates for opentelemetry-instrumentation-bom-alpha by @zeitlinger in #1860
- ignore internal poms by @zeitlinger in #1862
🧹 Chore
- add IDEA icon by @zeitlinger in #1676
👒 Dependencies
- fix(deps): update dependency commons-io:commons-io to v2.21.0 by @renovate[bot] in #1670
- chore(deps): update eclipse-temurin:25-jre docker digest to 4a26dfc by @renovate[bot] in #1671
- chore(deps): update eclipse-temurin:25-jre docker digest to dbfb525 by @renovate[bot] in #1673
- chore(deps): update eclipse-temurin docker tag to v25.0.1_8-jre by @renovate[bot] in #1672
- chore(deps): update dependency mise to v2025.11.3 by @renovate[bot] in #1674
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 31fb090 by @renovate[bot] in #1675
- chore(deps): update grafana/k6 docker digest to ef816d9 by @renovate[bot] in #1677
- fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.14 by @renovate[bot] in #1678
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to ac6ce08 by @renovate[bot] in #1679
- fix(deps): update jetty monorepo to v12.1.4 by @renovate[bot] in #1680
- chore(deps): update jdx/mise-action action to v3.4.1 by @renovate[bot] in #1682
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to daeb27e by @renovate[bot] in #1683
- fix(deps): update protobuf monorepo by @renovate[bot] in #1681
- chore(deps): update dependency org.wiremock:wiremock to v3.13.2 by @renovate[bot] in #1685
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 73fe03b by @renovate[bot] in #1687
- chore(deps): update dependency mise to v2025.11.5 by @renovate[bot] in #1688
- chore(deps): update dependency org.apache.maven.plugins:maven-jar-plugin to v3.5.0 by @renovate[bot] in #1686
- chore(deps): update actions/checkout digest to 93cb6ef by @renovate[bot] in #1689
- chore(deps): update actions/checkout action to v5.0.1 by @renovate[bot] in #1690
- chore(deps): update grafana/grafana docker tag to v12.3.0 by @renovate[bot] in #1693
- chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.1.0 by @renovate[bot] in #1692
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.140.1 by @renovate[bot] in #1695
- fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v3.5.8 by @renovate[bot] in #1696
- chore(deps): update grafana/k6 docker digest to d8e305a by @renovate[bot] in #1697
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #1698
- fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4 by @renovate[bot] in #1699
- chore(deps): update jdx/mise-action action to v3.5.0 by @renovate[bot] in #1700
- chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.20.0 by @renovate[bot] in #1701
- chore(deps): update dependency mise to v2025.11.7 by @renovate[bot] in #1702
- chore(deps): update jdx/mise-action action to v3.5.1 by @renovate[bot] in #1703
- chore(deps): update grafana/k6 docker digest to 16bc234 by @renovate[bot] in #1704
- chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.20.1 by @renovate[bot] in #1705
- chore(deps): update dependency com.google.errorprone:error_prone_core to v2.45.0 by @renovate[bot] in #1706
- chore(deps): update module go:github.com/grafana/oats to v0.5.0 by @renovate[bot] in #1707
- chore(deps): update dependency org.apache.maven.plugins:maven-resources-plugin to v3.4.0 by @renovate[bot] in #1709
- chore(deps): update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 by @renovate[bot] in #1710
- chore(deps): update dependency mise to v2025.11.11 by @renovate[bot] in #1711
- chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.13 by @renovate[bot] in #1713
- chore(deps): update module go:github.com/grafana/oats to v0.6.0 by @renovate[bot] in #1714
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.141.0 by @renovate[bot] in #1715
- chore(deps): update actions/checkout digest to 8e8c483 by @renovate[bot] in #1717
- chore(deps): update actions/checkout action to v6.0.1 by @renovate[bot] in #1718
- chore(deps): update prom/prometheus docker tag to v3.8.0 by @renovate[bot] in #1716
- chore(deps): update otel/opentelemetry-collector-contrib:0.141.0 docker digest to b14234c by @renovate[bot] in #1719
- chore(deps): update actions/setup-java digest to f2beeb2 by @renovate[bot] in #1720
- chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.14 by @renovate[bot] in #1721
- fix(deps): update jetty monorepo to v12.1.5 by @renovate[bot] in #1722
- chore(deps): update dependency lychee to v0.22.0 by @renovate[bot] in #1723
- chore(deps): update dependency mise to v2025.12.0 by @renovate[bot] in #1725
- fix(deps): update protobuf monorepo by @renovate[bot] in #1724
- fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.15 by @renovate[bot] in #1726
- chore(deps): update dependency org.mockito:mockito-core to v5.21.0 by @renovate[bot] in #1731
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to f6b0925 by @renovate[bot] in #1732
- chore(deps): update actions/cache action to v5 by @renovate[bot] in #1736
- chore(deps): update actions/cache digest to 9255dc7 by @renovate[bot] in #1737
- chore(deps): update dependency mise to v2025.12.7 by @renovate[bot] in #1739
- chore(deps): update dependency org.testcontainers:junit-jupiter to v1.21.4 by @renovate[bot] in #1740
- chore(deps): update super-linter/super-linter action to v8.3.1 by @renovate[bot] in #1743
- chore(deps): update prom/prometheus docker tag to v3.8.1 by @renovate[bot] in #1742
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.142.0 by @renovate[bot] in #1741
- chore(deps): update grafana/grafana docker tag to v12.3.1 by @renovate[bot] in #1745
- chore(deps): update dependency maven to v3.9.12 by @renovate[bot] in #1744
- fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.1 by @renovate[bot] in #1746
- chore(deps): update grafana/grafana:12.3.1 docker digest to 2175aaa by @renovate[bot] in #1747
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.0 by @renovate[bot] in #1748
- chore(deps): update dependency com.uber.nullaway:nullaway to v0.12.15 by @renovate[bot] in #1749
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.1 by @renovate[bot] in #1750
- chore(deps): update dependency org.codehaus.mojo:exec-maven-plugin to v3.6.3 by @renovate[bot] in #1751
- chore(deps): update dependency mise to v2025.12.12 by @renovate[bot] in #1752
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.2 by @renovate[bot] in #1753
- chore(deps): update super-linter/super-linter action to v8.3.2 by @renovate[bot] in #1754
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.3 by @renovate[bot] in #1756
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.4 by @renovate[bot] in #1757
- chore(deps): update module go:github.com/gohugoio/hugo to v0.153.5 by @renovate[bot] in #1758
- chore(deps): update module go:github.com/gohugoio/hugo to v0.154.0 by @renovate[bot] in #1759
- chore(deps): update module go:github.com/gohugoio/hugo to v0.154.2 by @renovate[bot] in #1760
- chore(deps): update dependency mise to v2025.12.13 by @renovate[bot] in #1761
- chore(deps): update grafana/k6 docker digest to a7c79af by @renovate[bot] in #1763
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.143.0 by @renovate[bot] in #1765
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.143.1 by @renovate[bot] in #1767
- fix(deps): update junit-framework monorepo to v6.0.2 by @renovate[bot] in #1764
- chore(deps): update prom/prometheus docker tag to v3.9.0 by @renovate[bot] in #1768
- chore(deps): update module go:github.com/gohugoio/hugo to v0.154.3 by @renovate[bot] in #1766
- chore(deps): update prom/prometheus docker tag to v3.9.1 by @renovate[bot] in #1770
- chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.10.0 by @renovate[bot] in #1771
- chore(deps): update dependency com.google.errorprone:error_prone_core to v2.46.0 by @renovate[bot] in #1773
- chore(deps): update module go:github.com/gohugoio/hugo to v0.154.4 by @renovate[bot] in #1775
- chore(deps): update dependency mise to v2026 by @renovate[bot] in #1777
- chore(deps): update module go:github.com/gohugoio/hugo to v0.154.5 by @renovate[bot] in #1776
- fix(deps): update protobuf monorepo by @renovate[bot] in #1774
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 968f191 by @renovate[bot] in #1779
- fix(deps): update protobuf monorepo by @renovate[bot] in #1778
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 96bccca by @renovate[bot] in #1782
- chore(deps): update dependency org.codehaus.mojo:versions-maven-plugin to v2.21.0 by @renovate[bot] in #1786
- chore(deps): update dependency mise to v2026.1.4 by @renovate[bot] in #1785
- chore(deps): update jdx/mise-action action to v3.6.0 by @renovate[bot] in #1784
- chore(deps): update actions/cache action to v5.0.2 by @renovate[bot] in #1788
- chore(deps): update grafana/tempo docker tag to v2.9.1 by @renovate[bot] in #1789
- chore(deps): update eclipse-temurin:25.0.1_8-jre docker digest to 9d1d306 by @renovate[bot] in #1790
- chore(deps): update jdx/mise-action action to v3.6.1 by @renovate[bot] in #1791
- chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.0 by @renovate[bot] in #1792
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.144.0 by @renovate[bot] in #1793
- chore(deps): update actions/setup-java digest to be666c2 by @renovate[bot] in #1796
- fix(deps): update dependency org.springframework.boot:spring-boot-starter-parent to v4.0.2 by @renovate[bot] in #1797
- chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.0 by @renovate[bot] in #1799
- chore(deps): update actions/checkout action to v6.0.2 by @renovate[bot] in #1798
- chore(deps): update dependency org.assertj:assertj-core to v3.27.7 by @renovate[bot] in #1801
- fix(deps): update dependency io.dropwizard.metrics:metrics-core to v4.2.38 by @renovate[bot] in #1805
- chore(deps): update dependency mise to v2026.1.7 by @renovate[bot] in #1804
- fix(deps): update dependency io.dropwizard.metrics5:metrics-core to v5.0.6 by @renovate[bot] in #1806
- chore(deps): update dependency org.assertj:assertj-core to v3.27.7 by @renovate[bot] in #1807
- chore(deps): update dependency java to v25.0.2+10.0.lts by @renovate[bot] in #1813
- chore(config): migrate Renovate config by @renovate[bot] in #1815
- fix(deps): update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.18 by @renovate[bot] in #1820
- chore(deps): update grafana/tempo docker tag to v2.10.0 by @renovate[bot] in #1821
- chore(deps): update dependency com.uber.nullaway:nullaway to v0.13.1 by @renovate[bot] in #1822
- chore(deps): update grafana/grafana docker tag to v12.3.2 by @renovate[bot] in #1824
- chore(deps): update dependency com.diffplug.spotless:spotless-maven-plugin to v3.2.1 by @renovate[bot] in #1825
- chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.4.0 by @renovate[bot] in #1826
- chore(deps): update module go:github.com/gohugoio/hugo to v0.155.0 by @renovate[bot] in #1831
- chore(deps): update super-linter to v8.4.0 by @renovate[bot] in #1830
- chore(deps): update actions/cache action to v5.0.3 by @renovate[bot] in #1833
- fix(deps): update jetty monorepo to v12.1.6 by @renovate[bot] in #1837
- chore(deps): update module go:github.com/gohugoio/hugo to v0.155.1 by @renovate[bot] in #1836
- chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.15.0 by @renovate[bot] in #1839
- chore(deps): update dependency mise to v2026.2.0 by @renovate[bot] in #1840
- chore(deps): update module go:github.com/gohugoio/hugo to v0.155.2 by @renovate[bot] in #1841
- chore(deps): update actions/checkout digest to de0fac2 by @renovate[bot] in #1844
- fix(deps): update protobuf monorepo by @renovate[bot] in #1835
- chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.145.0 by @renovate[bot] in #1849
- chore(deps): update dependency com.google.errorprone:error_prone_core to v2.47.0 by @renovate[bot] in #1848
- chore(deps): update eclipse-temurin docker tag to v25.0.2_10-jre by @renovate[bot] in #1853
- chore(deps): update ghcr.io/super-linter/super-linter docker tag to v8.5.0 by @renovate[bot] in #1856
- chore(deps): update eclipse-temurin:25.0.2_10-jre docker digest to ad53b91 by @renovate[bot] in #1857
- chore(deps): update module go:github.com/gohugoio/hugo to v0.155.3 by @renovate[bot] in #1858
- chore(deps): update dependency org.apache.maven.plugins:maven-dependency-plugin to v3.10.0 by @renovate[bot] in #1859
- fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.24.0-alpha by @renovate[bot] in #1863
- chore(deps): update grafana/k6 docker digest to 1d0ddce by @renovate[bot] in #1864
- chore(deps): update eclipse-temurin:25.0.2_10-jre docker digest to 43a7b50 by @renovate[bot] in #1867
- chore(deps): update module go:github.com/grafana/oats to v0.6.1 by @renovate[bot] in #1869
- chore(deps): update grafana/grafana docker tag to v12.3.3 by @renovate[bot] in #1870
- fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha by @renovate[bot] in #1871
- fix(deps): update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.25.0-alpha by @renovate[bot] in #1872
New Contributors
- @Myllyenko made their first contribution in #1691
- @Donnerbart made their first contribution in #1735
- @sibasispadhi made their first contribution in #1769
- @jack-berg made their first contribution in #1794
Full Changelog: v1.4.3...v1.5.0