Releases: micrometer-metrics/micrometer
v1.1.5
Notable changes
#1421 If using the ElasticMeterRegistry
, any existing metrics_template
template needs to be deleted when upgrading so it can be recreated with the fix included in that change.
See the 1.1.5 milestone for full details on what was included in this release. All changes from the 1.0.11 release were also included in 1.1.5.
v1.0.11
NOTE: This is the last planned patch release of the 1.0.x version line. Please upgrade to a supported release line to get future patches.
See the 1.0.11 milestone for details on changes included in this release.
v1.1.4
See the 1.1.4 milestone for included changes. 1.0.10 changes are also included in this release.
Notable changes
Default PauseDetector
The default PauseDetector
has been changed to NoPauseDetector
from ClockDriftPauseDetector
(see #1324). To restore the prior behavior, configure a ClockDriftPauseDetector
on your MeterRegistry like:
registry.config().pauseDetector(new ClockDriftPauseDetector(Duration.ofMillis(100), Duration.ofMillis(100));
Fail fast on missing required configuration
MissingRequiredConfigurationException
will be thrown when instantiating MeterRegistry implementations if required configuration values are not available from the given *Config class used.
Fixes
Enhancements
v1.0.10
See the 1.0.10 milestone for included items.
Notable changes
Default PauseDetector
The default PauseDetector
has been changed to NoPauseDetector
from ClockDriftPauseDetector
(see #1324). To restore the prior behavior, configure a ClockDriftPauseDetector
on your MeterRegistry like:
registry.config().pauseDetector(new ClockDriftPauseDetector(Duration.ofMillis(100), Duration.ofMillis(100));
Fixes
- Tomcat ThreadPool metrics reporting NaN values
- Handle NaN and infinity for New Relic Insights
- Replace invalid characters in events for New Relic naming convention
- Respect mode for FunctionTimer/FunctionCounter in SimpleMeterRegistry
- Respect time unit parameter in FunctionTimer.totalTime()
- Handle null MemoryUsage in JvmMemoryMetrics
- InfluxMeterRegistry sends tags with empty values which influx then rejects
- Use nanoseconds for Dropwizard timer snapshot mean
- Start line sink only when enabled in StatsD meter registry
- Use noop processor when publishing is disabled in StatsD meter registry
- Get Timed annotation from proxy target when failed
- Handle missing exceptions in WebMvcMetricsFilter
- Custom meters' fields are written incorrectly with InfluxMeterRegistry
Enhancements
- Add Infinity Buckets to the StatsD MeterRegistry for Meters with an SLA
- Use MissingRequiredConfigurationException consistently
- Datadog: log when applicationKey is not configured
- Use system-dependent line separator for logs
- Various documentation improvements
- Various test code polish
v1.1.3
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
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.