Skip to content

Releases: micrometer-metrics/micrometer

v1.1.3

19 Feb 12:44
Compare
Choose a tag to compare

See the 1.1.3 milestone for included items.

Fixes

Includes 1.0.10 fixes up to the point of 1.1.3 release (see diff).

  • Wait to publish metrics to Cloudwatch even if application is shutting down
  • Handle NaN in various registries
    • LoggingMeterRegistry
    • HumioMeterRegistry
  • KafkaConsumerMetrics' "records-lead" metric should not be a TimeGauge
  • KafkaConsumerMetrics properly tagged per topic and partition
  • StackdriverMeterRegistry handles publishing empty histograms

Micrometer Spring Legacy fixes

  • Avoid creating meter binders before registry has been customized

Polish

  • Avoid MediaType.get calls in OkHttpSender where possible
  • JavaDoc polish for Elasticsearch support
  • JavaDoc for RestTemplateExchangeTags.outcome
  • Avoid potentially expensive calls when debug logging is not enabled
  • Align some test class names with class under test
  • Unify access modifiers on across some classes
  • Fix setup for some test classes
  • Properly set interrupted status for CloudWatchMeterRegistry publish thread

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.