Releases: micrometer-metrics/micrometer
Releases · micrometer-metrics/micrometer
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.
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.