Please refer to the GitHub releases for the latest releases of Dropwizard Metrics.
Compiled and targeted JDK8
Support for running under JDK9 #1236
Move JMX reporting to the metrics-jmx
module
Add Bill of Materials for Metrics #1239 #1239
Used Java 8 Time API for data formatting
Removed unnecessary reflection hacks for HealthCheckRegistry
Removed internal LongAdder
Removed internal ThreadLocalRandom
Optimized generating random numbers
Timer.Context
now implements AutoCloseable
Upgrade Jetty integration to Jetty 9.4
Support tracking Jersey filters in Jersey resources #1118
Add ResponseMetered
annotation for Jersey resources #1186
Add a method for timing non-throwing functions. #1224
Unnecessary clear operation for ChunkedAssociativeArray #1211
Add some common metric filters #1210
Add possibility to subclass Timer.Context #1226
[InstrumentedScheduledExecutorService] Fix the scheduledFixedDelay to call the correct method #1192
Improve ScheduledReporter
convertDurations
precision #1115
Suppress all kinds of Throwables raised by report()
#1128
ExponentiallyDecayingReservoir
was giving incorrect values in the snapshot if the inactive period was too long #1135
Ability to get default metrics registry without an exception #1140
Ability to get default health check registry without an exception #1152
SlidingTimeWindowArrayReservoir
as a fast alternative of SlidingTimeWindowReservoir
#1139
Avoid a NPE in toString of HealthCheck.Result
#1141
More robust lookup of ThreadLocal
and LongAdder
on JDK6 (e.g. WebLogic) #1136
Support for shutting down the health check registry. #1084
Added support for the default shared health check registry name #1095 #1095
SharedMetricRegistries are now thread-safe. #1094
The size of the snapshot of a histogram is reported via JMX. #1102
Don’t ignore the counter attribute for reporters. #1090
Added support for disabling attributes in ConsoleReporter. #1092
Rollbacked GraphiteSanitize to replacing whitespaces. #1099
Fix accidentally broken Graphite UDP reporter #1100
GraphiteReporter opens a new TCP connection when sending metrics instead of maintaining a persisted connection. #1047
GraphiteReporter retries DNS lookups in case of a lookup failure. #1064
ScheduledReporter suppresses all kind of exceptions raised by the report method. #1049
JDK’s ThreadLocalRandom is now used by default. #1052
JDK’s LongAdder is now used by default. #1055
Fixed a race condition bug in ExponentiallyDecayingReservoir. #1033
Fixed a long overflow bug in SlidingTimeWindowReservoir. #1063
AdminServlet supports CPU profiling. #927
GraphiteReporter sanitizes metrics. #938
Support for publishing BigInteger and BigDecimal metrics in GraphiteReporter. #933
Support for publishing boolean metrics in GraphiteReporter. #905
Added support for overriding the format of floating numbers in GraphiteReporter. #1073
Added support for disabling reporting of metric attributes. #1048
Reporters are more user friendly for managed environments like GAE or JEE. #1018
Support for setting a custom initial delay for reporters. #999
Support for custom details in a result of a health check. #663
Added a listener for health checks. #1068
Support for asynchronous health checks #1077
Health checks are reported as unhealthy on exceptions. #783
Allow setting a custom prefix for Jetty’s InstrumentedQueuedThreadPool. #947
Allow setting custom prefix for Jetty’s QueuedThreadPool. #908
Added support for Jetty 9.3 and higher. #1038
Fixed instrumentation of Jetty9 async servlets. #1074
Added support for JCache/JSR 107 metrics. #1010
Added thread-safe getters for metrics with custom instantiations. #1023
Added an overload of Timer#time that takes a Runnable. #989
Support extracting the request URI from wrapped requests in HttpClientMetricNameStrategies. #947
Support for the log4j2 xml-based config. #900
Internal Striped64 doesn’t depend on sun.misc.Unsafe anymore. #966
Optimized creation of UniformSnapshot. #970
Added a memory pool gauge to the JVM memory usage metrics. #786
Added support for async servlets for metric-servlet. #796
Opt-in default shared metric registry. #801
Added support for patterns in MBean object names #809
Allow a pluggable strategy for the name of the CSV files for CsvReporter. #882
Upgraded to slf4j 1.22
Upgraded to Jackson 2.6.6
Upgraded to amqp-client 3.6.6
Upgraded to httpclient 4.5.2
Upgraded to log4j2 2.3
Upgraded to logback 1.1.10
GraphiteReporter opens a new TCP connection when sending metrics instead of maintaining a persisted connection. #1036
GraphiteReporter retries DNS lookups in case of a lookup failure. #1064
ScheduledReporter suppresses all kind of exceptions raised by the report method. #1040
JDK’s ThreadLocalRandom is now used by default. #1052
JDK’s LongAdder is now used by default. #1055
Fixed a race condition bug in ExponentiallyDecayingReservoir. #1046
Fixed a long overflow bug in SlidingTimeWindowReservoir. #1072
https://groups.google.com/forum/#!topic/metrics-user/zwzHnMBcAX4
Upgrade to Jetty 9.1 (metrics-jetty9, Jetty 9.0 module renamed to metrics-jetty9-legacy)
Add log4j2 support (metrics-log4j2)
Upgrade to Jersey2 (metrics-jersey2)
Add httpasyncclient support (metrics-httpasyncclient)
Changed maven groupId to io.dropwizard.metrics
Enable Java8 builds on Travis, fix javadocs and disable some doclinting
Fixing some compilation warnings about missing generics and varargs invocation
Instrumentation for java.util.concurrent classes
ExponentiallyDecayingReservoir: quantiles weighting
Loosen type requirements for JmxAttributeGauge constructor
SlidingWindowReservoir - ArrayOutOfBoundsException thrown if # of Reservoir examples exceeds Integer max value
Classloader metrics
Add an instrumented ScheduledExecutorService
Fix race condition in InstrumentedThreadFactoryTest
Correct comparison of System.nanoTime in SlidingTimeWindowReservoir
Add SharedHealthCheckRegistries class
Migrate benchmarks from Caliper to JMH
New annotations: @CachedGauge, @Counted, @Metric
Support for annotations on classes and constructors
Allow @Metric on methods and parameters
Add @Inherited and @Documented on all type annotations
Adapted ehcache integration to latest ehcache version 2.8.3
Upgrade to HttpClient 4.3
InstrumentedHandler: Remove duplicate calls to requests.update(…)
New metric ‘utilization-max’ to track thread usage out of max pool size in jetty
Replaced Jetty-specific Request with Servlet API interfaces
Jetty 8: Avoid NPE if InstrumentedQueuedThreadPool gauges are read too early
Jetty 8: Call updateResponses onComplete of ContinuationListener
Allow specifying a custom prefix Jetty 9 InstrumentedHandler
MetricsModule is serializing wrong minute rates for timers
MeterSerializer.serialize had m1_rate and m15_rate transposed
Add CachedThreadStatesGaugeSet
Monitor count of deadlock threads
Prevent exceptions from ThreadDumpServlet on Google AppEngine
Upgrade to logback 1.1.1
Allow InstrumentedAppender use in logback.xml
Use getClass() in place of AbstractInstrumentedFilter.class in generated metric names
Update MetricsServlet with support for JSONP as alternative to CORS
Specify the base name of the metrics as a filter init-param for the metrics captured in the AbstractInstrumentedFilter
Add option to provide MetricFilter to MetricsServlet
AdminServlet generates link to pretty printed healthchecks
MetricsServlet.ContextListener doesn’t initialize the context correctly
Every reporter implements Reporter interface to indicate that is a Reporter
Added support for passing a ScheduledExecutorService to ScheduledReporters
Improve the ScheduledReporter#stop method
Ensure ScheduledReporters get unique thread pools.
Suppress runtime exceptions thrown from ScheduledReporter#report
Ability to inject a factory of ObjectName
Lazy fetch of PlatformMBeanServer
JMX Reporter throws exception when metric name contains an asterisk
onTimerRemoved in JmxListener calls registered.add
Support for mBean servers that rewrite the supplied ObjectName upon registration
Graphite reporter does not notify when Graphite/Carbon server is unreachable
Persistent connections to Graphite
Graphite constructor accepts host/port
Graphtie Pickle sender
Graphite UDP sender
Graphite AMQP sender
Add a threshold/minimum value to report before converting results to 0
Report to multiple gmetric instances
Escape slahes on ganglia metric names
Upgrade slf4j to 1.7.6
Enhancement for logging level option on Slf4jReporter
Fixed NPE in MetricRegistry#name
.
ScheduledReporter
and JmxReporter
now implement Closeable
.
Fixed cast exception for async requests in metrics-jetty9
.
Added support for Access-Control-Allow-Origin
to MetricsServlet
.
Fixed numerical issue with Meter
EWMA rates.
Deprecated AdminServletContextListener
in favor of MetricsServlet.ContextListener
and
HealthCheckServlet.ContextListener
.
Added additional constructors to HealthCheckServlet
and MetricsServlet
.
Renamed DefaultWebappMetricsFilter
to InstrumentedFilter
.
Renamed MetricsContextListener
to InstrumentedFilterContextListener
and made it fully
abstract to avoid confusion.
Renamed MetricsServletContextListener
to AdminServletContextListener
and made it fully
abstract to avoid confusion.
Upgraded to Servlet API 3.1.
Upgraded to Jackson 2.2.2.
Upgraded to Jetty 8.1.11.
Added SharedMetricRegistries
, a singleton for sharing named metric registries.
Fixed XML configuration for metrics-ehcache
.
Fixed XML configuration for metrics-jersey
.
Fixed XML configuration for metrics-log4j
.
Fixed XML configuration for metrics-logback
.
Fixed a counting bug in metrics-jetty9
’s InstrumentedHandler.
Added MetricsContextListener
to metrics-servlet
.
Added MetricsServletContextListener
to metrics-servlets
.
Extracted the Counting
interface.
Reverted SlidingWindowReservoir
to a synchronized implementation.
Added the implementation version to the JAR manifests.
Made dependencies for all modules conform to Maven Enforcer’s convergence rules.
Fixed Slf4jReporter
’s logging of 99th percentiles.
Added optional name prefixing to GraphiteReporter
.
Added metric-specific overrides of rate and duration units to JmxReporter
.
Documentation fixes.
Added ScheduledReporter#report()
for manual reporting.
Fixed overly-grabby catches in HealthCheck
and
InstrumentedResourceMethodDispatchProvider
.
Fixed phantom reads in SlidingWindowReservoir
.
Revamped metrics-jetty9
, removing InstrumentedConnector
and improving
the API.
Fixed OSGi imports for sun.misc
.
Added a strategy class for HttpClient
metrics.
Upgraded to Jetty 9.0.3.
Upgraded to Jackson 2.2.1.
Upgraded to Ehcache 2.6.6.
Upgraded to Logback 1.0.13.
Upgraded to HttpClient 4.2.5.
Upgraded to gmetric4j 1.0.3, which allows for host spoofing.
Metrics is now under the com.codahale.metrics
package, with the corresponding changes in Maven
artifact groups. This should allow for an easier upgrade path without classpath conflicts.
MetricRegistry
no longer has a name.
Added metrics-jetty9
for Jetty 9.
JmxReporter
takes an optional domain property to disambiguate multiple reporters.
Fixed Java 6 compatibility problem. (Also added Java 6 as a CI environment.)
Added MetricRegistryListener.Base
.
Switched Counter
, Meter
, and EWMA
to use JSR133’s LongAdder
instead of
AtomicLong
, improving contended concurrency.
Added MetricRegistry#buildMap()
, allowing for custom map implementations in
MetricRegistry
.
Added MetricRegistry#removeMatching(MetricFilter)
.
Changed metrics-json
to optionally depend on metrics-healthcheck
.
Upgraded to Jetty 8.1.10 for metrics-jetty8
.
Total overhaul of most of the core Metrics classes:
Metric names are now just dotted paths like com.example.Thing
, allowing for very flexible
scopes, etc.
Meters and timers no longer have rate or duration units; those are properties of reporters.
Reporter architecture has been radically simplified, fixing many bugs.
Histograms and timers can take arbitrary reservoir implementations.
Added sliding window reservoir implementations.
Added MetricSet
for sets of metrics.
Changed package names to be OSGi-compatible and added OSGi bundling.
Extracted JVM instrumentation to metrics-jvm
.
Extracted Jackson integration to metrics-json
.
Removed metrics-guice
, metrics-scala
, and metrics-spring
.
Renamed metrics-servlet
to metrics-servlets
.
Renamed metrics-web
to metrics-servlet
.
Renamed metrics-jetty
to metrics-jetty8
.
Many more small changes!
Removed all OSGi bundling. This will be back in 3.0.
Added InstrumentedSslSelectChannelConnector
and InstrumentedSslSocketConnector
.
Made all metric names JMX-safe.
Upgraded to Ehcache 2.6.2.
Upgraded to Apache HttpClient 4.2.2.
Upgraded to Jersey 1.15.
Upgraded to Log4j 1.2.17.
Upgraded to Logback 1.0.7.
Upgraded to Spring 3.1.3.
Upgraded to Jetty 8.1.8.
Upgraded to SLF4J 1.7.2.
Replaced usage of Unsafe
in InstrumentedResourceMethodDispatchProvider
with type erasure
trickery.
Upgraded to Jackson 2.1.1.
Added OSGi bundling manifests.
Upgraded to Apache HttpClient 4.2.1.
Changed InstrumentedClientConnManager
to extend PoolingClientConnectionManager
instead of
the deprecated ThreadSafeClientConnManager
.
Fixed a bug in ExponentiallyDecayingSample
with long periods of inactivity.
Fixed problems with re-registering metrics in JMX.
Added support for DnsResolver
instances to InstrumentedClientConnManager
.
Added support for formatted health check error messages.
Fixed double-registration in metrics-guice
.
Fixed instrumentation of all usages of InstrumentedHttpClient
.
Added support for Java 7’s direct and mapped buffer pool stats in VirtualMachineMetrics
and
metrics-servlet
.
Added support for XML configuration in metrics-ehcache
.
metrics-spring
now support @Gauge
-annotated fields.
Opened GraphiteReporter
up for extension.
Added group
and type
to metrics-annotations
, metrics-guice
, metrics-jersey
,
and metrics-spring
.
Fixed handling of non-int gauges in GangliaReporter
.
Fixed NullPointerException
errors in metrics-spring
.
General improvements to metrics-spring
, including allowing custom Clock
instances.
Change logging of InstanceNotFoundException
exceptions thrown while unregistering a metric
in JmxReporter
to TRACE
. It being WARN
resulted in huge log dumps preventing process
shutdowns when applications had ~1K+ metrics.
Upgraded to Spring 3.1.1 for metrics-spring
.
Upgraded to JDBI 2.31.2.
Upgraded to Jersey 1.12.
Upgraded to Jetty 7.6.1.
Fixed rate units for meters in GangliaReporter
.
InstrumentationModule
in metrics-guice
now uses the default MetricsRegistry
and
HealthCheckRegistry
.
Fixed a concurrency bug in JmxReporter
.
Upgraded to Jackson 1.9.4.
Upgraded to Jetty 7.6.0.
Added escaping for garbage collector and memory pool names in GraphiteReporter
.
Fixed the inability to start and stop multiple reporter instances.
Switched to using a backported version of ThreadLocalRandom
for UniformSample
and
ExponentiallyDecayingSample
to reduce lock contention on random number generation.
Removed Ordered
from TimedAnnotationBeanPostProcessor
in metrics-spring
.
Upgraded to JDBI 2.31.1.
Upgraded to Ehcache 2.5.1.
Added #timerContext()
to Scala Timer
.
Added FindBugs checks to the build process.
Fixed the catching of Error
instances thrown during health checks.
Added enable
static methods to CsvReporter
and changed
CsvReporter(File, MetricsRegistry)
to CsvReporter(MetricsRegistry, File)
.
Slimmed down InstrumentedEhcache
.
Hid the internals of GangliaReporter
.
Hid the internals of metrics-guice
.
Changed metrics-httpclient
to consistently associate metrics with the org.apache
class
being extended.
Hid the internals of metrics-httpclient
.
Rewrote InstrumentedAppender
in metrics-log4j
. It no longer forwards events to an
appender. Instead, you can just attach it to your root logger to instrument logging.
Rewrote InstrumentedAppender
in metrics-logback
. No major API changes.
Fixed bugs with @ExceptionMetered
-annotated resource methods in metrics-jersey
.
Fixed bugs generating Snapshot
instances from concurrently modified collections.
Fixed edge case in MetricsServlet
’s thread dumps where one thread could be missed.
Added RatioGauge
and PercentGauge
.
Changed InstrumentedQueuedThreadPool
’s percent-idle
gauge to be a ratio.
Decomposed MetricsServlet
into a set of focused servlets: HealthCheckServlet
,
MetricsServlet
, PingServlet
, and ThreadDumpServlet
. The top-level servlet which
provides the HTML menu page is now AdminServlet
.
Added metrics-spring
.
Added absolute memory usage to MetricsServlet
.
Extracted @Timed
etc. to metrics-annotations
.
Added metrics-jersey
, which provides a class allowing you to automatically instrument all
@Timed
, @Metered
, and @ExceptionMetered
-annotated resource methods.
Moved all classes in metrics-scala
from com.yammer.metrics
to
com.yammer.metrics.scala
.
Renamed CounterMetric
to Counter
.
Renamed GaugeMetric
to Gauge
.
Renamed HistogramMetric
to Histogram
.
Renamed MeterMetric
to Meter
.
Renamed TimerMetric
to Timer
.
Added ToggleGauge
, which returns 1
the first time it’s called and 0
every time after
that.
Now licensed under Apache License 2.0.
Converted VirtualMachineMetrics
to a non-singleton class.
Removed Utils
.
Removed deprecated constructors from Meter
and Timer
.
Removed LoggerMemoryLeakFix
.
DeathRattleExceptionHandler
now logs to SLF4J, not syserr.
Added MetricsRegistry#groupedMetrics()
.
Removed Metrics#allMetrics()
.
Removed Metrics#remove(MetricName)
.
Removed MetricsRegistry#threadPools()
and #newMeterTickThreadPool()
and added
#newScheduledThreadPool
.
Added MetricsRegistry#shutdown()
.
Renamed ThreadPools#shutdownThreadPools()
to #shutdown()
.
Replaced HealthCheck
’s abstract name
method with a required constructor parameter.
HealthCheck#check()
is now protected
.
Moved DeadlockHealthCheck
from com.yammer.metrics.core
to com.yammer.metrics.utils
.
Added HealthCheckRegistry#unregister(HealthCheck)
.
Fixed typo in VirtualMachineMetrics
and MetricsServlet
: commited
to committed
.
Changed MetricsRegistry#createName
to protected
.
All metric types are created exclusively through MetricsRegistry
now.
Metrics.newJmxGauge
and MetricsRegistry.newJmxGauge
are deprecated.
Fixed heap metrics in VirtualMachineMetrics
.
Added Snapshot
, which calculates quantiles.
Renamed Percentiled
to Sampling
and dropped percentile
and percentiles
in favor of
producing Snapshot
instances. This affects both Histogram
and Timer
.
Renamed Summarized
to Summarizable
.
Changed order of CsvReporter
’s construction parameters.
Renamed VirtualMachineMetrics.GarbageCollector
to
VirtualMachineMetrics.GarbageCollectorStats
.
Moved Guice/Servlet support from metrics-servlet
to metrics-guice
.
Removed metrics-aop
.
Removed newJmxGauge
from both Metrics
and MetricsRegistry
. Just use JmxGauge
.
Moved JmxGauge
to com.yammer.metrics.util
.
Moved MetricPredicate
to com.yammer.metrics.core
.
Moved NameThreadFactory
into ThreadPools
and made ThreadPools
package-visible.
Removed Timer#values()
, Histogram#values()
, and Sample#values()
. Use getSnapshot()
instead.
Removed Timer#dump(File)
and Histogram#dump(File)
, and Sample#dump(File)
. Use
Snapshot#dump(File)
instead.
Added DeathRattleExceptionHandler
.
Fixed NPE in VirtualMachineMetrics
.
Added decorators for connectors and thread pools in metrics-jetty
.
Added TimerMetric#time()
and TimerContext
.
Added a shorter factory method for millisecond/second timers.
Switched tests to JUnit.
Improved logging in GangliaReporter
.
Improved random number generation for UniformSample
.
Added metrics-httpclient
for instrumenting Apache HttpClient 4.1.
Massively overhauled the reporting code.
Added support for instrumented, non-public
methods in metrics-guice
.
Added @ExceptionMetered
to metrics-guice
.
Added group prefixes to GangliaReporter
.
Added CvsReporter
, which outputs metric values to .csv
files.
Improved metric name sanitization in GangliaReporter
.
Added Metrics.shutdown()
and improved metrics lifecycle behavior.
Added metrics-web
.
Upgraded to ehcache 2.5.0.
Many, many refactorings.
metrics-servlet
now responds with 501 Not Implememented
when no health checks have been
registered.
Many internal refactorings for testability.
Added histogram counts to metrics-servlet
.
Fixed a race condition in ExponentiallyDecayingSample
.
Added timezone and locale support to ConsoleReporter
.
Added metrics-aop
for Guiceless support of method annotations.
Added metrics-jdbi
which adds instrumentation to JDBI.
Fixed NPE for metrics which belong to classes in the default package.
Now deploying artifacts to Maven Central.
Added an option message to successful health check results.
Fixed locale issues in GraphiteReporter
.
Added GangliaReporter
.
Added per-HTTP method timers to InstrumentedHandler
in metrics-jetty
.
Fixed a thread pool leak for meters.
Added #dump(File)
to HistogramMetric
and TimerMetric
.
Upgraded to Jackson 1.9.x.
Upgraded to slf4j 1.6.2.
Upgraded to logback 0.9.30.
Upgraded to ehcache 2.4.5.
Surfaced Metrics.removeMetric()
.
Fixed a bug in GC monitoring.
Fixed dependency scopes for metrics-jetty
.
Added time and VM version to vm
output of MetricsServlet
.
Dropped com.sun.mangement
-based GC instrumentation in favor of a
java.lang.management
-based one. getLastGcInfo
has a nasty native memory leak in it, plus
it often returned incorrect data.
Upgraded to Jackson 1.8.5.
Upgraded to Jetty 7.4.5.
Added sanitization for metric names in GraphiteReporter
.
Extracted out a Clock
interface for timers for non-wall-clock timing.
Extracted out most of the remaining statics into MetricsRegistry
and HealthCheckRegistry
.
Added an init parameter to MetricsServlet
for disabling the jvm
section.
Added a Guice module for MetricsServlet
.
Added dynamic metric names.
Upgraded to ehcache 2.4.5.
Upgraded to logback 0.9.29.
Allowed for the removal of metrics.
Added the ability to filter metrics exposed by a reporter to those which match a given predicate.
Moved to Maven for a build system and extracted the Scala façade to a metrics-scala
module
which is now the only cross-built module. All other modules dropped the Scala version suffix in
their artifactId
.
Fixed non-heap metric name in GraphiteReporter
.
Fixed stability error in GraphiteReporter
when dealing with unavailable servers.
Fixed error with anonymous, instrumented classes.
Fixed error in MetricsServlet
when a gauge throws an exception.
Fixed error with bogus GC run times.
Link to the pretty JSON output from the MetricsServlet
menu page.
Fixed potential race condition in histograms’ variance calculations.
Fixed memory pool reporting for the G1 collector.
Fixed a bug in the initial startup phase of the JmxReporter
.
Added metrics-ehcache
, for the instrumentation of Ehcache
instances.
Fixed a typo in metrics-jetty
’s InstrumentedHandler
.
Added name prefixes to GraphiteReporter
.
Added JVM metrics reporting to GraphiteReporter
.
Actually fixed MetricsServlet
’s links when the servlet has a non-root context path.
Now cross-building for Scala 2.9.0.
Added pretty
query parameter for MetricsServlet
to format the JSON object for human
consumption.
Added no-cache
headers to the MetricsServlet
responses.
Upgraded to Jackson 1.7.6.
Added a new instrumented Log4J appender.
Added a new instrumented Logback appender. Thanks to Bruce Mitchener (@waywardmonkeys) for the patch.
Added a new reporter for the Graphite aggregation system. Thanks to Mahesh Tiyyagura (@tmahesh) for the patch.
Added scoped metric names.
Added Scala 2.9.0.RC{2,3,4} as build targets.
Added meters to Jetty handler for the percent of responses which have 4xx
or 5xx
status
codes.
Changed the Servlet API to be a provided
dependency. Thanks to Mårten Gustafson (@chids) for
the patch.
Separated project into modules:
metrics-core
: A dependency-less project with all the core metrics.
metrics-graphite
: A reporter for the [Graphite](http://graphite.wikidot.com)
aggregation system.
metrics-guice
: Guice AOP support.
metrics-jetty
: An instrumented Jetty handler.
metrics-log4j
: An instrumented Log4J appender.
metrics-logback
: An instrumented Logback appender.
metrics-servlet
: The Metrics servlet with context listener.
Added thread state and deadlock detection metrics.
Fix VirtualMachineMetrics
’ initialization.
Context path fixes for the servlet.
Added the @Gauge
annotation.
Big reworking of the exponentially-weighted moving average code for meters. Thanks to JD Maturen (@sku) and John Ewart (@johnewart) for pointing this out.
Upgraded to Guice 3.0.
Upgraded to Jackson 1.7.5.
Upgraded to Jetty 7.4.0.
Big rewrite of the servlet’s thread dump code.
Fixed race condition in ExponentiallyDecayingSample
. Thanks to Martin Traverso (@martint) for
the patch.
Lots of spelling fixes in Javadocs. Thanks to Bruce Mitchener (@waywardmonkeys) for the patch.
Added Scala 2.9.0.RC1 as a build target. Thanks to Bruce Mitchener (@waywardmonkeys) for the patch.
Patched a hilarious memory leak in java.util.logging
.
Added Guice AOP annotations: @Timed
and @Metered
.
Added HealthCheck#name()
.
Added Metrics.newJmxGauge()
.
Moved health checks into HealthChecks
.
Upgraded to Jackson 1.7.3 and Jetty 7.3.1.
Fixed JmxReporter
lag.
Added default arguments to timers and meters.
Added default landing page to the servlet.
Improved the performance of ExponentiallyDecayingSample
.
Fixed an integer overflow bug in UniformSample
.
Added linear scaling to ExponentiallyDecayingSample
.
Added histograms.
Added biased sampling for timers.
Added dumping of timer/histogram samples via the servlet.
Added dependency on jackon-mapper
.
Added classname filtering for the servlet.
Added URI configuration for the servlet.
Added JettyHandler
.
Made the Servlet
dependency optional.
Fix JmxReporter
initialization.
Dropped Counter#++
and Counter#--
.
Added Timer#update
.
Upgraded to Jackson 1.7.0.
Made JMX reporting implicit.
Added health checks.
Fixed thread names and some docs.
Fixed a memory leak in MeterMetric
.
Total rewrite in Java.
Added median
to Timer
.
Added p95
to Timer
(95th percentile).
Added p98
to Timer
(98th percentile).
Added p99
to Timer
(99th percentile).
Now compiled exclusively for 2.8.0 final.
Documentation fix.
Added TimedToggle
, which may or may not be useful at all.
Now cross-building for RC2 and RC3.
Blank Timer
instances (i.e., those which have recorded no timings yet) no longer explode when
asked for metrics for that which does not yet exist.
Nested classes, companion objects, and singletons don’t have trailing $
characters messing up
JMX’s good looks.
Fixed some issues with the implicit.ly plumbing.
Tweaked the sample size for Timer
, giving it 99.9% confidence level with a %5 margin of error
(for a normally distributed variable, which it almost certainly isn’t.)
Sample#iterator
returns only the recorded data, not a bunch of zeros.
Moved units of Timer
, Meter
, and LoadMeter
to their own attributes, which allows for
easy export of Metrics data via JMX to things like Ganglia or whatever.
Timer
now uses Welford’s algorithm for calculating running variance, which means no more
hilariously wrong standard deviations (e.g., NaN
).
Timer
now supports +=(Long)
for pre-recorded, nanosecond-precision timings.
changed Sample
to use an AtomicReferenceArray
Initial release