Skip to content

Releases: micrometer-metrics/micrometer

v1.0.6

19 Jul 03:45
Compare
Choose a tag to compare

Improvements

  • Influx retention policies are now fully customizable through InfluxConfig.
  • Make DataSourcePoolMetricsAutoConfiguration conditional on DataSource bean.
  • Make RestTemplateMetricsConfiguration an auto-configuration.
  • Make meterNamePrefix work as a prefix in MeterFilter#maximumAllowableTags.
  • Fetch authorization keys for every batch post in push-based registries containing such keys (including for Datadog).
  • JCacheMetrics guards against empty cache names, such as those emanating from Apache Ignite.
  • Remove extra space in description text for jvm.memory.committed.
  • Make step size configurable for SignalFx.
  • Added support for Jersey MappableException in DefaultJerseyTagsProvider.

Fixes

  • Only publish on close if the registry implementation is enabled.
  • Improve sanitation of name and tags for statsd to replace : characters.
  • Record a non-empty tag value for anonymous Exception types thrown in Spring WebMVC endpoints.
  • Fixed ConcurrentModificationException in CompositeMeterRegistry.
  • Added a base unit to the id on TimeGauge.
  • Fixed SLA bug that made the last two buckets always equal in count.
  • When using a "maximum allowable tag values" MeterFilter, the tag values seen before the maximum is reached continue to be allowed.
  • When the specified tag key was reached in "maximum allowable tag values" MeterFilter, other tag keys were affected too. This is no longer the case.
  • Fixed description text that generated errors on Prometheus Pushgateway.
  • Metrics.More is now public so less frequently used meter types can be constructed, e.g. Metrics.more().longTaskTimer(..).
  • Filters are now only applied once for percentiles, SLAs, and other synthetic meters.
  • Fixed regression in 1.0.5 that stopped converting Influx metric names to snakecase.
  • Make DatadogNamingConvention#tagKey respect its delegate.
  • StepTimer and StepDistributionSummary now update count and sum based on expiry.
  • Shade pcollections into micrometer-registry-statsd.

v1.0.5

12 Jun 21:39
Compare
Choose a tag to compare

Notice to StatsD users!

This release mistakenly failed to shade pcollections into micrometer-registry-statsd. For this patch release only, please add pcollections to your runtime classpath:

compile("io.micrometer:micrometer-registry-statsd:1.0.5")
runtime("org.pcollections:pcollections:3.0.1")

This will be resolved in 1.0.6.

Improvements

  • Cache StatsD lines for each meter to limit garbage produced by StatsD implementation.
  • Make JMX metrics domain configurable by property (backported from Spring Boot 2.0.3).
  • Avoid uri tag explosion when use of path variable is undetected (backported from Spring Boot 2.0.3).
  • Upgrade to Prometheus simpleclient_common version 0.4.0.
  • Memory improvements to camel and upper camel NamingConvention implementations.
  • Shutdown thread pool when closing StepMeterRegistry, an abstract base class upon which many implementations are built.

Fixes

  • Sanitize Telegraf tags on export.
  • HistogramSnapshot methods max(TimeUnit unit) and mean(TimeUnit unit) are appropriately scaled.
  • InfluxNamingConvention doesn't apply base convention to tag values.
  • GraphiteMeterRegistry passes Clock to self-created GraphiteReporter.
  • Use statKeys and statValues in PrometheusMeterRegistry.newMeter().
  • Corrected spelling on executor.steals metric name.
  • Corrected implementation of maximumAllowableTags to only limit metrics of a particular name.

v1.0.4

09 May 01:35
Compare
Choose a tag to compare

Improvements

  • Substantially improved meter registration performance.
  • Add descriptive text to MeterNotFoundException which is thrown when registry.get("find.me")... fails to find a matching meter:

image.png

  • All implementation-specific naming conventions that do some sanitization allow choice of base convention through a constructor parameter now.
  • Graphite tags-as-prefix are applied in the order in which they are inserted by default.
  • Performance of WebMVC tag creation optimized.
  • Apply accept/distribution statistic config filters only if meter doesn't already exist (performance nit).
  • Added check for empty values for lookup of Spring Boot property-based filter.

Fixes

  • Composite meter registries now only update meters once regardless of how many times it appears in the child registry tree.
  • We determined that cache miss counts cannot be calculated accurately for Hazelcast, so removed cache.gets with tag result=hit for Hazelcast. A metric cache.partition.gets was added for Hazelcast.
  • Properly escape names and tags that are presented to monitoring systems in JSON.
  • Explicitly shut down pause detector threads when the registry is closed.
  • Preconfigure Atlas registry to rename tags that conflict with reserved names.
  • Prometheus Timer and Summary now correctly decay percentiles (this was a regression in 1.0.3).
  • Pass percentile precision to child Timer and DistributionSummary.
  • Don't report NaN values to Influx.
  • Restored a deprecated AbstractTimer constructor which was removed in 1.0.3 (which was a breaking change).

Deprecated

  • StatsdConfig.queueSize(), which was unused.

v1.0.3

04 Apr 22:17
Compare
Choose a tag to compare

Improvements

  • Timer and Distribution now conditionally use one of three histogram structures depending on which options you have selected to improve memory consumption in most cases. See the memory consumption table in the Micrometer Concepts doc for more.
  • Pause compensation is now added to Timer max, so you can see the effect that system/VM pauses have on timed blocks of code.
  • Make WebMvgTags use matched patterns for HTTP 404.
  • Remove HierarchicalNameMapper as a configured @Bean so you can configure different hierarchical name mappers for different registries.

image

Fixes

  • Formatting of large values shipped to New Relic that yielded a parsing error previously.
  • MeterRegistryCustomizer for specific implementations now no longer can result in ClassCastException.
  • Prometheus summary produces a +Inf bucket when histogram data or SLAs are sent.
  • Fixed typo in hystrix binding conditional.
  • Prometheus Timer max metric separated and reported separately from other elements of the Timer (but the name has not changed).

v1.0.2

13 Mar 17:13
Compare
Choose a tag to compare

Improvements

  • Publish one last time on close for push-based systems.

Fixes

  • Improve performance of TimeDecayingMax.rotate() for infrequently used timer dimensions.
  • Make DoubleFormat independent of default locale.

v1.0.1

27 Feb 23:15
Compare
Choose a tag to compare

New Features/Improvements

  • Group complex meter types under one event in New Relic.
  • Can now set a custom sink for StatsD lines, allowing you to direct StatsD output to something other than UDP (e.g. messaging middleware).
  • Influx registry logging level consistency and property deserialization improvements.
  • Mark urlTemplate as nullable for RestTemplateExchangeTagsProvider

Fixes

  • Encode metric name which is being used in URL for Datadog.
  • Add slf4j-api dependency to registry implementations that depend on it.
  • Change default Wavefront proxy port.
  • Graphite FunctionTimers no longer return NaN. NaN gauges are not shipped to Graphite.
  • StatsD metrics can now originate from multiple producers without conflict.

v1.0.0

20 Feb 21:42
Compare
Choose a tag to compare
Fix all Javadoc warnings, fix SignalFx tag key naming convention

v1.0.0-rc.6

10 Jan 16:02
Compare
Choose a tag to compare
v1.0.0-rc.6 Pre-release
Pre-release

New Features/Improvements

  • Support for publishing to New Relic Insights API
  • Align property name prefixes in micrometer-spring-legacy with names in Spring Boot 2 M7
  • Pause detector is now configurable:
    • Can be swapped for a noop detector
    • The accuracy of the default clock-drift based detector can be configured to tradeoff CPU consumption for accuracy
  • Timer/DistributionSummary max implementations have moved to a ring-buffer based approach to better line up with other summary stats in time
  • Publish meter type metadata to Datadog
  • Add Tomcat metrics
  • Step registries now use a step-based function counter and function timer
  • Improve configuration defaults for CloudWatch
  • Improved counter naming for allocated and promoted bytes between GCs
  • Add Tags#of shortcut for creating a single tag list of tags.
  • Allow subclasses of PropertyMeterFilter to leverage the getMostSpecific method for looking up additional properties
  • FunctionCounter and FunctionTimer are now pollable in the StatsD implementation
  • Dropwizard improvements:
    • Map Micromter's Clock to Dropwizard's Clock type so the underlying Dropwizard meters obey Micrometer's notion of time
    • FunctionCounter can be made to report exponential moving averages like regular counters
    • FunctionTimer can be made to report exponential moving averages like regular timers
  • CaffeineCacheMetrics constructor is now consistent with other OOTB binders

Fixes

  • JMX exporter reports correct values for histogram percentile MBeans
  • Fix formatting of Datadog percentile time series metric names
  • Format metrics correctly independent of system locale
  • Fix race condition in CompositeMeterRegistry#add
  • MetricsFilter servlet filter now correctly tags HTTP 500 responses
  • Fix conditional application of TomcatMetricsConfiguration
  • Fix max in CumulativeTimer#measure
  • Prometheus percentiles histogram never resets (is cumulative)
  • Fix ClassCastException in CompositeMeterRegistry#add
  • When a controller has async operation, the operation is now correctly timed once

v1.0.0-rc.5

10 Jan 15:32
Compare
Choose a tag to compare
v1.0.0-rc.5 Pre-release
Pre-release

New Features/Improvements

  • Expose Hystrix metrics on time taken by http requests
  • Add autoconfiguration for Hystrix metrics
  • Add @Order to StringToDurationConverter so it doesn't conflict with custom converters
  • Add preliminary AWS CloudWatch support
  • Reduce thread contention on the map holding Meters inside a registry

Fixes

  • Remove Guava's AtomicDouble from CumulativeCounter
  • Improve conditional guard on WebMvcMetricsConfiguration
  • DistributionSummary/Timer now exports valid Prometheus buckets
  • Fixed naming convention for FunctionCounters exported to Prometheus

(Included in Spring Boot 2 M7)

v1.0.0-rc.4

17 Nov 04:18
Compare
Choose a tag to compare
v1.0.0-rc.4 Pre-release
Pre-release

New Features

  • Property-based meter filters!
  • SimpleMeterRegistry can now be configured to accumulate values or use a step-interval
  • OkHttp instrumentation.
  • Now validating user-provided HistogramConfigs
  • Improved internal data structure of composite meters for better performance
  • Improved histogram implementations allow for the retrieval of multiple percentiles/buckets in one call for better performance.
  • Conditionally disable RestTemplate customizer to allow micrometer-spring-legacy to be used for older versions of Spring Boot (pre 1.5.x)
  • Binders in MeterBindersConfiguration can now be disabled via properties
  • ThreadPoolTaskExecutor metrics binder
  • Jetty statistics binder
  • Hibernate binder

Fixes

  • WebMvcTags - Strip trailing URI slashes to limit dimensional explosion
  • MetricsFilter now forwards to other filters when a matchable handler mapping cannot be found
  • CumulativeDistributionSummary - prevent losing the maximum in case of data-race
  • CumulativeTimer - prevent losing the maximum in case of data-race
  • StatsD registry now accepts custom naming conventions
  • Fix thread safety issues in MeterRegistry
  • Add base unit to buffer pool metrics