Micrometer 1.10.0 is the GA version of a new feature release. See our support policy for support timelines. Below are the combined release notes of all the pre-release milestones and release candidate preceding it.
⚠️ Noteworthy
- Check out the new Observation API (see the Migration Guide)
- If you are upgrading from one of the pre-release versions, check the 1.10 Migration Guide
ReactorNettySender
has been removed #2802
⭐ New Features / Enhancements
- Add gRPC authority info to the observation context #3510
- Add "get[Low|High]CardinalityKeyValue()" on "Observation.Context" #3505
- Verify sender propagation for HTTP client instrumentation #3504
- Add support for creating KeyValues from any iterable #3503
- Added remoteServiceAddress for Sender / Receiver contexts #3500
- Provide a default for missing values in KeyValue #3458
- Allow documenting optional keys #3454
- Add wrap functionality to the Observation #3433
- Add Observation instrumentation for gRPC client and server #3427
- Add TestObservationRegistryAssert assertion for observation count #3426
- Make observation return its context and immutable access to parent #3423
- ReceiverContext was missing a remoteServiceName #3419
- Handle IO_ERROR for Apache HTTP client with observation API #3418
- Tck with observations #3410
- Set size and characteristics for Spliterator used with Tags and KeyValues #3409
- Test against ObservationDocumentation in instrumentation TCK #3372
- Add benchmarks for the Observation API #3370
- Support for Jetty 11 #3234
- Add "createNotStarted" method that lazily creates context #3401
- Context allows modification of KeyValues #3383
- Cloudwatch max batchSize was increased from 20 to 1000 #3376
- Events in DocumentedObservation #3367
- signalfx: remove unnecessary allocation if the distribution summary does not have histogram #3364
- Remote service name for sender context #3363
- Common ResponseContext interface for interacting with the response #3362
- JDK11 HttpClient instrumentation #3358
- Abstraction for instrumentating with a Timer or Observation (optionally) #3357
- [signalfxregistry]: Add option to send delta histogram count buckets. #3350
- Apache HTTP client instrumentation with Observation #3312
- Generify throwable in CheckedCallable/CheckedRunnable #3326
- Scoped checked actions #3323
- ObservationContextAssert now asserts ContextView, add parentObservation assertions #3304
- Add ObservationRegistry hasRemainingCurrentScope and similar assertions #3303
- Add getContextualName(Context c) on Observation.Convention #3301
- Receiver and SenderContext #3293
- Added option to set a parent Observation on an existing Observation #3291
- Introduces GlobalObservationConvention #3285
- Declare HdrHistogram as a runtime dependency #3263
- Observe instantaneous events #3100
- Add primitive Suppliers to Timer and LongTaskTimer #1304
- Add assertions for multiple handled test contexts #3274
- Added the ObservationConventionAware interface #3270
- Add ObservationContextAssert error assertions #3267
- Improved keys assertions in ObservationContextAssert #3266
- Further improvement of observation convention #3261
- Added support for Kotlin co-routines #3256
- New approach to naming conventions #3255
- Add KeyValues to the Observation #3244
@Observed
#3221- Add a LongTaskTimer for every Observation in TimerObservationHandler #3215
- Add
DynatraceConfig.DEFAULT
#3202 - OkHttp3 instrumentation with observation api #3176
- Support for different metric prefixes in StackdriverMeterRegistry #3171
- Unable to load MacOSDnsServerAddressStreamProvider on Apple Silicon with statsd meter registries #3066
- Add HighCardinalityTagsDetector #3047
- Http client instrumentation TCK #3258
- Added the getCurrentObservationScope method #3158
- Config for OTLP Resource attributes #3159
- Dynatrace registry: Print ignored config warning only when necessary #3155
- Dynatrace registry: Truncate log output #3148
- Use more generic KeyValue terminology in Observation and Common module #3126
- NOOP Observation should be created when no handlers are registered #3105
- MeterRegistryAssert provides checks for all type of meters #3104
- Add MongoCommandStartedEventTags for Mongodb metrics #3069
- Make _source.enabled configurable for ElasticMeterRegistry #2363
- Added Global Tags Provider #3061
- Add observeChecked methods to observe methods that can throw exceptions #3052
- Merge micrometer-binder changes and revert micrometer-api changes #3046
- Add observe method to the Observation for Runnable and Supplier #3040
- Observation text publisher #3034
Iterable<Tag>
vsIterable<? extends Tag>
#2092- Add base units for ForkJoinPool #1525
- Convert a BiPredicate for ObservationConfig to a dedicated interface #3003
- New Observation concept; revert Timer.Sample changes #2992
- Introduce HttpTagsProvider with default implementation #2945
- Current sample and Scope API #2871
- Timer handlers #2856
- Add method to SimpleMeterRegistry for outputting all meters #2946
🐞 Bug Fixes
- Fix failure message in ObservationContextAssert.hasSubsetOfKeys() #3495
- Non-monotonic kafka metric reported as counter #3300
- New Relic module fails on the module path #3412
- 'java.lang.module.FindException: Unable to derive module descriptor' when using module path with micrometer-core 1.10.0-M5 #3398
- New Relic module fails on the module path #3412
- signalfx: add tests for emiting percentile and histograms, fix timer #3369
- DocumentedObservation may always override contextual name to null #3307
- Fix generic parameters for composite observations #3173
- Service descriptor files not merged/transformed in statsd shadowJar #3268
- Accidental strict dep on LatencyUtils #1599
- Provider better APIs to move between Instrument Tags and Commons Tags #3102
- Failed to record timer metrics in native image with percentiles configured #3002
- Correct PostgreSQL metrics for dead tuples, with integration tests and refactoring #2474
- Dependency cycle between micrometer-core and reactor-netty caused by
ReactorNettySender
#2802 - Netty HTTP codec module included in statsd JAR #2929
- LongTaskTimer always converts durations of measurements to nanos #2947
📔 Documentation
- Automate non-Javadoc multi-line comments for license headers #2942
- Switch license header to a multiline comment instead of JavaDoc #2412
🔨 Dependency Upgrades
- Upgrade Spring Boot to 2.7.5 #3523
- Upgrade Spring Cloud to 3.1.5 #3520
- Upgrade Google Cloud Monitoring to 3.2.10 #3519
- Upgrade Spring Boot to 2.6.13 #3522
- Upgrade Mockito to 4.8.1 #3517
- Upgrade SignalFx to 1.0.25 #3516
- Upgrade AWS SDK V1 to 1.12.335 and V2 to 2.18.10 #3515
- Upgrade Reactor to 3.4.24, Reactor-Netty to 1.0.24, and Netty to 4.1.82 #3514
- Bump com.gradle.enterprise from 3.11.2 to 3.11.3 #3509
- Bump com.gradle.enterprise from 3.11.1 to 3.11.2 #3491
- Upgrade context-propagation to 1.0.0-RC1 for 1.10.0-RC1 #3477
- Upgrade Spotless plugin to 6.11.0 #3475
- Upgrade to me.champeau.mrjar 0.1.1 #3422
- Upgrade Dropwizard Metrics to 4.2.12 #3474
- Upgrade spectator (atlas) to 1.3.8 #3473
- Upgrade Spring Boot to 2.7.4 #3472
- Upgrade Spring Boot to 2.6.12 #3471
- Upgrade testcontainers to 1.17.5 #3470
- Upgrade junit 5.9.1, assertj to 3.23.1, mockito to 4.8.0, archunit to 1.0.0 #3469
- Upgrade wavefront-sdk-java to 3.0.3 #3467
- Upgrade signalfx-java to 1.0.24 #3466
- Upgrade AWS SDK to 1.12.318 and 2.17.289 #3465
- Upgrade netty to 4.1.81 reactor-netty to 1.0.23 and reactor to 3.4.23 #3464
- Upgrade gradle-download-task plugin to 5.2.1 #3463
- Upgrade nebula-release-plugin to 16.1.0 #3462
- Upgrade Spring Java Format dependencies to 0.0.35 #3459
- Properly pin gradle-info-plugin to 11.4.1 #3441
- Upgrade to Spotless Gradle Plugin 6.10.0 #3397
- Use 5.9.+ for JUnit BOM #3356
- Upgrade to context-propagation 1.0.0-M3 #3278
- Upgrade to Kotlin 1.7.10 #3276
- Use
latest.release
forio.opentelemetry.proto:opentelemetry-proto
#3259 - Update samples to use Spring Boot 2.7.0 #3205
- Update lock files for 1.10.0-M2 #3169
- Upgrade to Elasticsearch 8.1.3 and 7.17.3 for integration tests #3142
- Upgrade Spectator to 1.3.2 #3168
- Upgrade to Mockito 4.5.1 #3167
- Upgrade to AWS SDK v1 1.12.217 and v2 2.17.188 #3166
- Upgrade to Reactor 3.4.18, Reactor-Netty 1.0.19, Netty 4.1.77.Final #3165
- Upgrade to JMH 1.35 #3164
- Upgrade to Testcontainers 1.17.1 #3163
- Upgrade to Wiremock 2.33.2 #3162
- Upgrade to SignalFx 1.0.18 #3161
- Bump context propagation to 1.0.0-M2 #3133
- Pin to context-propagation-api 1.0.0-M1 #3072
- Upgrade Mockito to 4.3.1 #3029
- Upgrade AWS SDK v1 to 1.12.158 and v2 to 2.17.129 #3028
- Upgrade Netty to 4.1.74.Final #3026
- Upgrade Javaformat to 0.0.31 #3025
- Upgrade JUnit to 5.8.2 and Testcontainers to 1.16.3 #3024
- Upgrade Dropwizard Metrics to 4.1.30 #3023
- Upgrade Slf4J to 1.7.36 #3022
- Upgrade to Gradle Wrapper 7.4 #3001
- Upgrade build jdk to 17.0.2, 8.0.322 #2988
- Pin Dropwizard 4.+ instead of 4.0.+ #2905
- Upgrade Spring Boot to 2.6.2 (samples) #2968
- Upgrade JMH to 1.34 #2967
- Upgrade Mockito to 4.2.0 #2966
- Upgrade AWS SDK v1 to 1.12.136 and AWS SDK v2 to 2.17.107 #2964
- Upgrade Spectator to 1.0.14 #2963
- Upgrade to reactor 3.4.13, reactor-netty 1.0.14, netty 4.1.72.Final #2923
- Upgrade JUnit platform to 1.7.2 and vintage-engine to 5.7.2 #2962
- Upgrade awaitility to 4.1.1 #2961
- Upgrade Testcontainers to 1.16.2 #2960
- Upgrade ArchUnit to 0.22.0 #2959
- Upgrade spring-javaformat to 0.0.29 #2958
- Upgrade Spring Boot to 2.4.13 (samples) #2957
- Upgrade AssertJ to 3.22.0 #2956
- Upgrade SignalFx to 1.0.14 #2955
- Upgrade Dropwizard Metrics to 4.1.29 #2954
- Upgrade to Azure ApplicationInsights 2.6.4 #2953
- Upgrade Logback to 1.2.10 #2952
- Upgrade to Log4j 2 2.17.1 #2937
- Upgrade Log4J to 2.17.0 #2927
- Upgrade Logback to 1.2.9 #2926
- Upgrade Logback to 1.2.8 #2922
- Upgrade to log4j 2.16.0 #2918
- Upgrade to log4j 2.15.0 #2910
📝 Tasks
- Verify sender propagation for HTTP server instrumentation #3507
- Update CircleCI OpenJDK images to 8.0.345 and 11.0.16 respectively #3501
- Redact Dynatrace token in error logs #3484
- Disable downloadBaseline task for micrometer-jetty11 #3481
- Generate dependency lock files for 1.10.0-RC1 #3476
- Bump to a medium+ resource class for CI builds #3455
- Exclude buildscript-gradle.lockfile in deleteLockFiles task #3445
- Update samples to use Spring Boot 2.7.4 #3434
- Rename DocumentedObservation to ObservationDocumentation #3430
- Test SLFJ4 2.0 compatibility #3415
- Update OtlpMeterRegistryTest to run builds on Java 19 #3431
- Pin wiremock-jre8-standalone to 2.33.+ for 1.8.x and 1.9.x #3468
- Reduce flakiness of StatsdMeterRegistryPublishTest #3447
- Update TagsTest to run builds on Java 19 #3437
- Upgrade to JApicmp Gradle Plugin 0.4.1 #3435
- Support message supplier in WarnThenDebugLogger #3424
- Ignore METHOD_NEW_DEFAULT binary compatibility #3181
- Pin Jersey dependencies to 3.0.+ in its sample #3136
- Polish OTLP registry changes #3153
- Typo in OtlpLongTaskTImer #3147
- Remove deprecated GangliaConfig protocolVersion and rateUnits #3018
- Remove deprecated ElasticConfig#documentType #3017
- Remove deprecated constructor and dropwizard dependency in Ganglia registry #3016
- Remove deprecated method newLongTaskTimer(Id) on
MeterRegistry
#3015 - Remove deprecated KafkaConsumerMetrics #3013
- Remove deprecated JettyStatisticsMetrics #3012
- Remove deprecated HibernateMetrics and HibernateQueryMetrics #3011
- Remove deprecated
DiskSpaceMetrics
#3010 - Replace deprecated AbstractLifeCycleListener usage in Jetty tests #3014
- Upgrade Elasticsearch Docker image to 7.16.3 in integration tests #2986
- Use Testcontainers for MongoDB integration tests #2984
- Pin spectator-api to 1.0.+ for Micrometer 1.8.x #3027
- Store the Meter.Id instead of the Meter in KafkaMetrics #2991
- Bump up Gradle plugin dependencies #2979
- Use branch name in dependencies cache key for CircleCI #2975
- Upgrade to Gradle Shadow plugin 7.1.2 #2973
- Upgrade to Gradle Enterprise Gradle plugin 3.8 #2949
- Backport test improvements from 2.0.x to 1.7.x #2943
- Use daemon thread in CommonsObjectPool2Metrics #2938
- Suppress "warning: no comment" in javadoc task #2935
- Disable javadoc task for sample projects #2934
- Upgrade to Gradle Wrapper 7.3.3 #2931
- Upgrade to Gradle Wrapper 7.3.2 #2921
- Upgrade build images to JDK 8.0.312 and 11.0.13 #2919
- Upgrade build machine image to ubuntu-2004:202111-01 #2913
- Upgrade build images to JDK 17.0.1, 11.0.12, 8.0.302 #2912
- Use Javadoc code instead of Markdown backticks #2907
❤️ Contributors
Thank you to all the contributors who worked on this release:
@pirgeo, @arminru, @izeye, @philwebb, @kilink, @bogdandrutu, @bclozel, @simonbasle, @marschall, @violetagg, @sshplendid, @jprinet, @easimonand, and @ttddyy