We upgraded the Prometheus Java Client to 1.4.x (#6830) which brings support for Unicode which includes some behavioral change in naming conventions, see the 1.16 Migration-Guide.
⚠️ Noteworthy
- Deprecate the Wavefront module #6328
- Remove deprecated io.micrometer.core.lang annotations #6407
- Register JCache
cache.removalsas a FunctionCounter by default #2754 - Improve no-op behavior of the Observation API #6700
⭐ New Features
- Support KeyValues with annotations when using
ObservedAspect/@Observed#4030 - Validate low cardinality keys #6713
- Add counter for total loaded classes #3561
- Add eventexecutor.workers metrics for Netty #6375
- Avoid DistributionStatisticsConfig creation when retrieving timers #6661
- Avoid capturing lambda allocation when retrieving existing meters #6670
- Introduce MeterConvention #6710
- OpenTelemetry Semantic Conventions for JVM metrics #5286
- Add MeterFilter.forMeters utility method #6594
- Apache HC 5 OTel semantic convention #6591
- Improve nullability for gauges #6546
- Metrics for Generational Shenandoah GC #4259
- Support custom tags in NettyEventExecutorMetrics #6592
- Support newsgroups KeyValue for Jakarta Mail instrumentation #6558
- Add KeyName.withNoneValue() #6125
- Add getAll to Getter for repeated metadata #6312
- Enhance logging of negative amount in AbstractTimer.record() by printing stack trace #6530
- Flag to register JCache cache.removals as FunctionCounter #6471
- Improved Meter.Id#getTags() performance #6182
- Jakarta Mail instrumentation #5985
- Log requests as trace level for OtlpMeterRegistry #6514
- Make KafkaMetrics refresh interval configurable #6319
- Migrate to JSpecify annotations for nullability constraints #5547
- Provide meter count in HighCardinalityTagsDetector #6510
- StackdriverConfig option to not create metric descriptors #6281
- Use String.replace() where possible #6449
🐞 Bug Fixes
- Exclude java.* from OSGI Import-Package #6810
- Distribution without percentiles always has value 0 in Stackdriver #6401
- Incompatible with slf4j 2 in OSGi #6406
- LongTaskTimer#measure does not return max duration #6421
- Return NaN for null KafkaMetrics values #6324
- Scrape failure when conflicting meter types are registered #6434
- ValueResolver and ValueExpressionResolver nullability is inconsistent #6280
📔 Documentation
- Add a note about client-side percentiles with histogram #6836
- Add docs for HighCardinalityTagsDetector #6822
- Polish Javadoc from gh-6319 #6376
🔨 Dependency Upgrades
- Upgrade Micrometer Context Propagation to 1.2.0 #6860
- Bump ch.qos.logback:logback-classic from 1.5.19 to 1.5.20 #6813
- Bump com.google.auth:google-auth-library-oauth2-http from 1.34.0 to 1.40.0 #6801
- Bump com.google.cloud:google-cloud-monitoring from 3.63.0 to 3.79.0 #6818
- Bump com.google.cloud:libraries-bom from 26.60.0 to 26.71.0 #6826
- Bump com.netflix.spectator:spectator-reg-atlas from 1.8.12 to 1.9.1 #6793
- Bump io.prometheus:prometheus-metrics-bom from 1.3.6 to 1.4.2 #6830
- Bump software.amazon.awssdk:cloudwatch from 2.31.41 to 2.37.5 #6834
- Bump com.dynatrace.metric.util:dynatrace-metric-utils-java from 2.2.1 to 2.4.0 #6739
- Bump dropwizard-metrics from 4.2.30 to 4.2.37 #6729
- Bump io.opentelemetry.proto:opentelemetry-proto from 1.5.0-alpha to 1.7.0-alpha #6290
📝 Tasks
- Remove optional jsr305 dependency where not needed #6493
- Require explicit constraints in @contract #6568
❤️ Contributors
Thank you to all the contributors who worked on this release:
@isanghaessi, @izeye, @peterjeschke, @genuss, @etki, @Shaderbug, @MemencioPerez, @famaridon, @msqr, @scordio, @jbertram, @HeeChanN, @ttaehee, @deadok22, @pema4, and @thonra