Releases: micrometer-metrics/micrometer
Releases · micrometer-metrics/micrometer
v1.1.2
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
v1.1.1
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
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 extendsStepRegistryPropertiesConfigAdapter
.- Fix
spring.aop.auto
property reference.
v1.1.0
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)
andMeterRegistry#remove(Meter)
) and a newMeterRegistry#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
fromMeter
andMeterRegistry
to improve static code analysis experience (e.g. Sonar). - Added structural pattern matching for meters (
Meter#match(..)
andMeter#use(..)
) - Make
HierarchicalNameMapper
injectable forGraphiteMeterRegistry
. - 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 someMeterRegistryConfig
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
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).