InstrumentationModuleinmetrics-guicenow uses the defaultMetricsRegistryandHealthCheckRegistry.
- 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
ThreadLocalRandomforUniformSampleandExponentiallyDecayingSampleto reduce lock contention on random number generation. - Removed
OrderedfromTimedAnnotationBeanPostProcessorinmetrics-spring. - Upgraded to JDBI 2.31.1.
- Upgraded to Ehcache 2.5.1.
- Added
#timerContext()to ScalaTimer.
- Added FindBugs checks to the build process.
- Fixed the catching of
Errorinstances thrown during health checks. - Added
enablestatic methods toCsvReporterand changedCsvReporter(File, MetricsRegistry)toCsvReporter(MetricsRegistry, File). - Slimmed down
InstrumentedEhcache. - Hid the internals of
GangliaReporter. - Hid the internals of
metrics-guice. - Changed
metrics-httpclientto consistently associate metrics with theorg.apacheclass being extended. - Hid the internals of
metrics-httpclient. - Rewrote
InstrumentedAppenderinmetrics-log4j. It no longer forwards events to an appender. Instead, you can just attach it to your root logger to instrument logging. - Rewrote
InstrumentedAppenderinmetrics-logback. No major API changes. - Fixed bugs with
@ExceptionMetered-annotated resource methods inmetrics-jersey. - Fixed bugs generating
Snapshotinstances from concurrently modified collections. - Fixed edge case in
MetricsServlet's thread dumps where one thread could be missed. - Added
RatioGaugeandPercentGauge. - Changed
InstrumentedQueuedThreadPool'spercent-idlegauge to be a ratio. - Decomposed
MetricsServletinto a set of focused servlets:HealthCheckServlet,MetricsServlet,PingServlet, andThreadDumpServlet. The top-level servlet which provides the HTML menu page is nowAdminServlet. - Added
metrics-spring.
- Added absolute memory usage to
MetricsServlet. - Extracted
@Timedetc. tometrics-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-scalafromcom.yammer.metricstocom.yammer.metrics.scala. - Renamed
CounterMetrictoCounter. - Renamed
GaugeMetrictoGauge. - Renamed
HistogramMetrictoHistogram. - Renamed
MeterMetrictoMeter. - Renamed
TimerMetrictoTimer. - Added
ToggleGauge, which returns1the first time it's called and0every time after that. - Now licensed under Apache License 2.0.
- Converted
VirtualMachineMetricsto a non-singleton class. - Removed
Utils. - Removed deprecated constructors from
MeterandTimer. - Removed
LoggerMemoryLeakFix. DeathRattleExceptionHandlernow 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 abstractnamemethod with a required constructor parameter. HealthCheck#check()is nowprotected.- Moved
DeadlockHealthCheckfromcom.yammer.metrics.coretocom.yammer.metrics.utils. - Added
HealthCheckRegistry#unregister(HealthCheck). - Fixed typo in
VirtualMachineMetricsandMetricsServlet:commitedtocommitted. - Changed
MetricsRegistry#createNametoprotected. - All metric types are created exclusively through
MetricsRegistrynow. Metrics.newJmxGaugeandMetricsRegistry.newJmxGaugeare deprecated.- Fixed heap metrics in
VirtualMachineMetrics. - Added
Snapshot, which calculates quantiles. - Renamed
PercentiledtoSamplingand droppedpercentileandpercentilesin favor of producingSnapshotinstances. This affects bothHistogramandTimer. - Renamed
SummarizedtoSummarizable. - Changed order of
CsvReporter's construction parameters. - Renamed
VirtualMachineMetrics.GarbageCollectortoVirtualMachineMetrics.GarbageCollectorStats. - Moved Guice/Servlet support from
metrics-servlettometrics-guice. - Removed
metrics-aop. - Removed
newJmxGaugefrom bothMetricsandMetricsRegistry. Just useJmxGauge. - Moved
JmxGaugetocom.yammer.metrics.util. - Moved
MetricPredicatetocom.yammer.metrics.core. - Moved
NameThreadFactoryintoThreadPoolsand madeThreadPoolspackage-visible. - Removed
Timer#values(),Histogram#values(), andSample#values(). UsegetSnapshot()instead. - Removed
Timer#dump(File)andHistogram#dump(File), andSample#dump(File). UseSnapshot#dump(File)instead.
- Added
DeathRattleExceptionHandler. - Fixed NPE in
VirtualMachineMetrics. - Added decorators for connectors and thread pools in
metrics-jetty. - Added
TimerMetric#time()andTimerContext. - 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-httpclientfor instrumenting Apache HttpClient 4.1. - Massively overhauled the reporting code.
- Added support for instrumented, non-
publicmethods inmetrics-guice. - Added
@ExceptionMeteredtometrics-guice. - Added group prefixes to
GangliaReporter. - Added
CvsReporter, which outputs metric values to.csvfiles. - 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-servletnow responds with501 Not Implemementedwhen 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-aopfor Guiceless support of method annotations. - Added
metrics-jdbiwhich 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
InstrumentedHandlerinmetrics-jetty. - Fixed a thread pool leak for meters.
- Added
#dump(File)toHistogramMetricandTimerMetric. - 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
vmoutput ofMetricsServlet. - Dropped
com.sun.mangement-based GC instrumentation in favor of ajava.lang.management-based one.getLastGcInfohas 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
Clockinterface for timers for non-wall-clock timing. - Extracted out most of the remaining statics into
MetricsRegistryandHealthCheckRegistry. - Added an init parameter to
MetricsServletfor disabling thejvmsection. - 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-scalamodule which is now the only cross-built module. All other modules dropped the Scala version suffix in theirartifactIds. - Fixed non-heap metric name in
GraphiteReporter. - Fixed stability error in
GraphiteReporterwhen dealing with unavailable servers. - Fixed error with anonymous, instrumented classes.
- Fixed error in
MetricsServletwhen a gauge throws an exception. - Fixed error with bogus GC run times.
- Link to the pretty JSON output from the
MetricsServletmenu 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 ofEhcacheinstances. - Fixed a typo in
metrics-jetty'sInstrumentedHandler. - 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
prettyquery parameter forMetricsServletto format the JSON object for human consumption. - Added
no-cacheheaders to theMetricsServletresponses.
- 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
4xxor5xxstatus codes. - Changed the Servlet API to be a
provideddependency. 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 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
@Gaugeannotation. - 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.
- Added
HealthCheck#name(). - Added
Metrics.newJmxGauge(). - Moved health checks into
HealthChecks. - Upgraded to Jackson 1.7.3 and Jetty 7.3.1.
- Added Guice AOP annotations:
@Timedand@Metered. - Added
HealthCheck#name(). - Added
Metrics.newJmxGauge(). - Moved health checks into
HealthChecks. - Upgraded to Jackson 1.7.3 and Jetty 7.3.1.
- Fixed
JmxReporterlag. - 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
Servletdependency optional.
- Fix
JmxReporterinitialization.
- Dropped
Counter#++andCounter#--. - 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
mediantoTimer. - Added
p95toTimer(95th percentile). - Added
p98toTimer(98th percentile). - Added
p99toTimer(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
Timers (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
$s 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#iteratorreturns only the recorded data, not a bunch of zeros.- Moved units of
Timer,Meter, andLoadMeterto their own attributes, which allows for easy export of Metrics data via JMX to things like Ganglia or whatever.
Timernow uses Welford's algorithm for calculating running variance, which means no more hilariously wrong standard deviations (e.g.,NaN).Timernow supports+=(Long)for pre-recorded, nanosecond-precision timings.
- changed
Sampleto use anAtomicReferenceArray
- Initial release