JMX Exporter 1.7.0
Features
- SSL PEM support: The exporter HTTP server can now use PEM-encoded certificate/private key files instead of a Java keystore. Both
httpServer.ssl.pem.certificate.filenameandhttpServer.ssl.pem.privateKey.filenameare supported, including encrypted private keys (with an optionalpasswordthat supports${ENV_VAR}resolution) and unencrypted/encrypted PKCS8, traditional RSA, and traditional EC key formats. PEM mode is mutually exclusive withhttpServer.ssl.keyStore, and certificate material continues to be reloaded hourly. - Configurable Java agent logging backend: The Java agent (and isolator agent) can now use a JUL-independent logging backend that writes
INFO,WARN, andERRORmessages to standard error. Select it with-Djmx.prometheus.exporter.logging.backend=nativeor theJMX_PROMETHEUS_EXPORTER_LOGGING_BACKEND=nativeenvironment variable. Supported values arenativeandjul(the default), and the system property takes precedence over the environment variable. - Performance optimizations: Collector scraping, rule matching/caching, configuration loading, credential caching, and map/string handling were tuned, and JMH benchmark modules and helper scripts were added (
collector-benchmarks,jmx_prometheus_common-benchmarks,jmx_prometheus_javaagent-benchmarks) to track them. - Reference material: The website documentation was restructured and a
1.7.0versioned documentation set was added.
Fixed
- The JVM no longer hangs on exit when
httpServer.sslis configured; the shared scheduled executor used for the hourly SSL certificate reload (and formaximumRequestSeconds) now uses daemon threads like the rest of the project. - Fixed credential caching: valid credentials are now looked up in the cache before the potentially expensive password verification, and invalid credentials are never cached.
- Fixed configuration precedence.
- Fixed security edge cases in the HTTP server.
- Fixed a
NullPointerExceptionwhen an MBean reports an attribute that is not present in itsMBeanInfo(the attribute is now skipped). - Fixed jar shading for the Java agent and isolator java agent.
- The isolator class loader no longer fails on JDK 8 when a package is already defined by an ancestor classloader.
- Reverted Caffeine to a version that maintains Java 8 compatibility.
- Fixed Javadoc.
- Fixed
release.shto correctly omit thevprefix from the release tag. - Fixed the developer test scripts.
- Fixed integration test golden files to ignore the release version.
Changes
- Removed the Bouncy Castle library dependency.
- Implemented a BOM and reworked the build/release tooling (artifact packaging and SBOM handling).
- Added JMH benchmark modules for the collector, shared support, and Java agent.
- Refactored the integration test suite and added integration test framework helpers.
- Added and updated Docker test images.
- Decreased integration test output and improved test coverage.
- Updated documentation and added
1.7.0versioned documentation. - Multiple dependency updates.
New Contributors
- @BZValoche made their first contribution in #1529
- @arnab_nandy7 made their first contribution in #1528
- @Abaidullah889 made their first contribution in #1601
Full Changelog