Releases: micrometer-metrics/micrometer
Releases · micrometer-metrics/micrometer
v1.0.7
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
NotificationListener
s created byTomcatMetrics
. - 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 delegateNamingConvention
. - Make
InfluxNamingConvention
respect its delegate for tag values. - Close all registries when closing
CompositeMeterRegistry
. WavefrontMetricRegistry
now honorsconnectTimeout
andreadTimeout
properties.WavefrontMeterRegistry
does not send metrics when the value is 'NaN'.- Ensure that Spring Boot
CharacterEncodingFilter
is ordered first. - Restore constructors in
StepDistributionSummary
andStepTimer
(fix API backwards incompatibility introduced in 1.0.6). DataSourcePoolMetricsAutoConfiguration
now properly checks whetherDataSource
bean is available properly.- Restore double quotes for database name in InfluxDB database creation.
v1.0.6
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 inMeterFilter#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
inCompositeMeterRegistry
. - 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
andStepDistributionSummary
now update count and sum based on expiry.- Shade pcollections into
micrometer-registry-statsd
.
v1.0.5
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
methodsmax(TimeUnit unit)
andmean(TimeUnit unit)
are appropriately scaled.InfluxNamingConvention
doesn't apply base convention to tag values.GraphiteMeterRegistry
passesClock
to self-createdGraphiteReporter
.- 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
Improvements
- Substantially improved meter registration performance.
- Add descriptive text to
MeterNotFoundException
which is thrown whenregistry.get("find.me")...
fails to find a matching meter:
- 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 tagresult=hit
for Hazelcast. A metriccache.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
Improvements
Timer
andDistribution
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.
Fixes
- Formatting of large values shipped to New Relic that yielded a parsing error previously.
MeterRegistryCustomizer
for specific implementations now no longer can result inClassCastException
.- 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 theTimer
(but the name has not changed).
v1.0.2
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
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 forRestTemplateExchangeTagsProvider
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
FunctionTimer
s no longer return NaN. NaN gauges are not shipped to Graphite. - StatsD metrics can now originate from multiple producers without conflict.
v1.0.0
Fix all Javadoc warnings, fix SignalFx tag key naming convention
v1.0.0-rc.6
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 thegetMostSpecific
method for looking up additional properties FunctionCounter
andFunctionTimer
are now pollable in the StatsD implementation- Dropwizard improvements:
- Map Micromter's
Clock
to Dropwizard'sClock
type so the underlying Dropwizard meters obey Micrometer's notion of time FunctionCounter
can be made to report exponential moving averages like regular countersFunctionTimer
can be made to report exponential moving averages like regular timers
- Map Micromter's
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
inCompositeMeterRegistry#add
- When a controller has async operation, the operation is now correctly timed once
v1.0.0-rc.5
New Features/Improvements
- Expose Hystrix metrics on time taken by http requests
- Add autoconfiguration for Hystrix metrics
- Add
@Order
toStringToDurationConverter
so it doesn't conflict with custom converters - Add preliminary AWS CloudWatch support
- Reduce thread contention on the map holding
Meter
s inside a registry
Fixes
- Remove Guava's
AtomicDouble
fromCumulativeCounter
- Improve conditional guard on
WebMvcMetricsConfiguration
DistributionSummary
/Timer
now exports valid Prometheus buckets- Fixed naming convention for
FunctionCounter
s exported to Prometheus
(Included in Spring Boot 2 M7)