Skip to content

Releases: micrometer-metrics/micrometer

v1.1.2

24 Jan 10:53
Compare
Choose a tag to compare

See the 1.1.2 milestone for included items.

Enhancements

  • Add outcome tag to default rest template tags provider in spring legacy
  • Reading kafka records-lag metrics with topic and partition name
  • cloudwatch: log interruptions as a warn

Fixes

  • Includes all 1.0.9 fixes.
  • Split Dynatrace messages if they are too large
  • Fix handling of infinity and NaN values for some registries
  • Address potential NPE in TomcatMetricsBinder when Context is null
  • Make checkedForIndexTemplate volatile in ElasticMeterRegistry
  • HibernateMetrics fails if Hibernate is not on the classpath
  • Exclude libnetty_transport_native_epoll_x86_64.so to prevent PortUnreachableException: recvfrom() failed on Linux
  • Consider property LoggingRegistryConfig.logInactive() when logging

v1.0.9

12 Jan 05:07
Compare
Choose a tag to compare

Fixes

  • Add access token validation to SignalFxPropertiesConfigAdapter
  • Fix description and base unit for executor.queued meter

v1.1.1

12 Dec 15:51
Compare
Choose a tag to compare

Enhancements

  • Auto-configure Kafka consumer metrics in micrometer-spring-legacy.
  • Remove unused Measurement interface in AppOptics.
  • Monitor additivity-disabled loggers for Log4j2.

Fixes

  • Includes all 1.0.8 fixes.
  • Removed meters are removed from Prometheus registry.
  • Remove metrics from Dropwizard MetricRegistry when removing a meter.
  • Remove HttpSender.print() usages.
  • Fix Kafka consumer metrics.
  • micrometer-registry-statsd does not pollute classpath with /META-INF/native/libnetty_transport_native_epoll_x86_64.so from Netty 4.1.29.
  • Stop configuring metrics if Hibernate is not available.
  • Fixed StatsD Nagle buffering algorithm.
  • Fix a wrong index when copying an array in Tags.and(Tag...)
  • Jersey server configuration alignment.
  • Remove logging from JvmGcMetrics.
  • PostgreSQLDatabaseMetrics#runQuery advances JDBC cursor to next row.
  • Tag deduplication now does not add extra duplicate tag.
  • Handle null suffix in CloudWatchMeterRegistry.Batch.metricDatum().

v1.0.8

12 Dec 15:44
Compare
Choose a tag to compare

Fixes

  • TimedAspect does not disrupt the application flow when there is an exception recording a metric.
  • micrometer-spring-legacy now respects Actuator endpoint settings.
  • Removed extraneous print statements in StatsD registry.
  • Exception thrown by MicrometerCollector for a meter with a duplicate name now includes the name in its message.
  • Fixed accept/deny filter precedence.
  • Add endpoint-enabled condition to Prometheus Actuator endpoint.
  • Improved Telegraf sanitization.
  • Use Commons Logging for WebMvcMetricsFilter.
  • WavefrontPropertiesConfigAdapter now extends StepRegistryPropertiesConfigAdapter.
  • Fix spring.aop.auto property reference.

v1.1.0

29 Oct 22:30
Compare
Choose a tag to compare

Enhancements

New registries

  • Added new registry implementations for monitoring systems:
    • AppOptics
    • Azure Monitor
    • Dynatrace
    • Elastic
    • Humio
    • KairosDB
    • Stackdriver
    • Sysdig StatsD
  • Added a LoggingMeterRegistry that formats metrics as logs periodically.

New meter binders

  • Jetty server thread pool metrics.
  • Thread state metrics to JvmThreadMetrics.
  • PostgreSQL metrics.
  • Disk space metrics.
  • Log4J 1.2 metrics.
  • Kafka consumer metrics.
  • Enhance ExecutorServiceMetrics to record time between task submission and task execution start time.
  • Hystrix metrics reworked from the ground up.

Spring Boot 1.5.x legacy module improvements

  • Support management.metrics.tags.* in Spring Boot 1.5.x.
  • Support distribution's min/max expected values via properties in Spring Boot 1.5.x.
  • Autoconfigure Hibernate metrics.

Other improvements

  • Added support for buffering StatsD metrics using Nagle's algorithm.
  • Add support for MultiGauge, a helper to spawn a series of gauges from a table-like structure that share a name but vary in tags. MultiGauge allows the set of gauges to grow and shrink over time, provided the total set of tags is well-bounded over time.
  • Add support for Meter removal (MeterRegistry#remove(Meter.Id) and MeterRegistry#remove(Meter)) and a new MeterRegistry#config().onMeterRemoved(Consumer) method.
  • Meter registration memory and CPU performance improvements.
  • Support for strong reference gauges.
  • Support for defining gauges from Supplier<T>.
  • Add "outcome" tag to WebMVC and Jersey metrics that summarizes the HTTP status as informational, success, redirection, client error, server error, or unknown.
  • Reduce default push-based registry logging level to DEBUG and add a single INFO-level log message that indicates the push frequency on startup.
  • Upgrade to Dropwizard 4.x for Graphite/JMX.
  • Eliminate Dropwizard dependency for Ganglia, instead publishing directly through the Ganglia Java client.
  • Add a new overload Timer#start() that uses the default system clock.
  • Allow for injection of HTTP interface into push-based registries (e.g. DatadogMeterRegistry.builder(..).httpClient(CUSTOM_HTTP_CLIENT).build().
  • Drop Autocloseable from Meter and MeterRegistry to improve static code analysis experience (e.g. Sonar).
  • Added structural pattern matching for meters (Meter#match(..) and Meter#use(..))
  • Make HierarchicalNameMapper injectable for GraphiteMeterRegistry.
  • Add exception handling for TimedAspect.
  • Add base units to several binders. (Breaking change for Prometheus. See #1063)

Fixes

  • Properly handle infinity values in gauges.
  • Remove invalid DEFAULT from some MeterRegistryConfig subclasses (when a default isn't possible because there is a required property).
  • Always convert Strings to byte array using UTF-8.

v1.0.7

15 Oct 00:59
Compare
Choose a tag to compare

Enhancements

  • Base units are set for percentile data on distribution summaries and timers.
  • Don't report on close in GraphiteMeterRegistry/GangliaMeterRegistry if registry is not enabled.
  • Remove NotificationListeners created by TomcatMetrics.
  • Make ServletMetricsConfiguration an auto-configuration class.
  • Conditionalize the JMX name that TomcatMetrics looks up depending on whether the app is using embedded Tomcat or not.
  • StepMeterRegistry now produces daemon threads.
  • Order MeterFilters and MeterRegistryCustomizers.
  • Add a switch to disable ScheduledMethodMetrics.
  • Limit metrics collection of incoming requests for Servlet.

Fixes

  • Don't allow NaN values to be shipped to Cloudwatch/Wavefront.
  • Fixed StackOverflowError in Prometheus registry when thousands of tags exist for one meter name.
  • Correctly name exception tag for anonymous exception classes in Jersey instrumentation.
  • Make GraphiteNamingConvention respect its delegate NamingConvention.
  • Make InfluxNamingConvention respect its delegate for tag values.
  • Close all registries when closing CompositeMeterRegistry.
  • WavefrontMetricRegistry now honors connectTimeout and readTimeout properties.
  • WavefrontMeterRegistry does not send metrics when the value is 'NaN'.
  • Ensure that Spring Boot CharacterEncodingFilter is ordered first.
  • Restore constructors in StepDistributionSummary and StepTimer (fix API backwards incompatibility introduced in 1.0.6).
  • DataSourcePoolMetricsAutoConfiguration now properly checks whether DataSource bean is available properly.
  • Restore double quotes for database name in InfluxDB database creation.

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).