diff options
author | Ivan Topolnak <itopolnak@despegar.com> | 2014-03-07 18:08:01 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-03-11 21:14:53 -0300 |
commit | 54f37293b1faac5355c26a298db6b858114bc659 (patch) | |
tree | 14a4a6e156d163925664753d990f7d5bbe4b4084 /kamon-core/src/main/scala/kamon/metrics/instruments | |
parent | 60f8dd3be4593cb55e5c4023b7041ad94f6b8c8a (diff) | |
download | Kamon-54f37293b1faac5355c26a298db6b858114bc659.tar.gz Kamon-54f37293b1faac5355c26a298db6b858114bc659.tar.bz2 Kamon-54f37293b1faac5355c26a298db6b858114bc659.zip |
multiple fixes to the custom metrics collection facilities
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metrics/instruments')
-rw-r--r-- | kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHdrRecorder.scala (renamed from kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHighDynamicRangeRecorder.scala) | 16 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/metrics/instruments/HdrRecorder.scala (renamed from kamon-core/src/main/scala/kamon/metrics/instruments/HighDynamicRangeRecorder.scala) | 26 |
2 files changed, 18 insertions, 24 deletions
diff --git a/kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHighDynamicRangeRecorder.scala b/kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHdrRecorder.scala index 533e06b1..3a39ec69 100644 --- a/kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHighDynamicRangeRecorder.scala +++ b/kamon-core/src/main/scala/kamon/metrics/instruments/ContinuousHdrRecorder.scala @@ -16,9 +16,8 @@ package kamon.metrics.instruments -import org.HdrHistogram.HighDynamicRangeRecorder -import org.HdrHistogram.HighDynamicRangeRecorder.Configuration -import kamon.metrics.MetricSnapshot +import org.HdrHistogram.HdrRecorder +import kamon.metrics.{ Scale, MetricSnapshotLike } /** * This recorder keeps track of the last value recoded and automatically adds it after collecting a snapshot. This is @@ -29,7 +28,9 @@ import kamon.metrics.MetricSnapshot * after a new event is processed. * */ -class ContinuousHighDynamicRangeRecorder(configuration: Configuration) extends HighDynamicRangeRecorder(configuration) { +class ContinuousHdrRecorder(highestTrackableValue: Long, significantValueDigits: Int, scale: Scale) + extends HdrRecorder(highestTrackableValue, significantValueDigits, scale) { + @volatile private var lastRecordedValue: Long = 0 override def record(value: Long): Unit = { @@ -37,7 +38,7 @@ class ContinuousHighDynamicRangeRecorder(configuration: Configuration) extends H super.record(value) } - override def collect(): MetricSnapshot = { + override def collect(): MetricSnapshotLike = { val snapshot = super.collect() super.record(lastRecordedValue) @@ -45,6 +46,7 @@ class ContinuousHighDynamicRangeRecorder(configuration: Configuration) extends H } } -object ContinuousHighDynamicRangeRecorder { - def apply(configuration: Configuration) = new ContinuousHighDynamicRangeRecorder(configuration) +object ContinuousHdrRecorder { + def apply(highestTrackableValue: Long, significantValueDigits: Int, scale: Scale) = + new ContinuousHdrRecorder(highestTrackableValue, significantValueDigits, scale) }
\ No newline at end of file diff --git a/kamon-core/src/main/scala/kamon/metrics/instruments/HighDynamicRangeRecorder.scala b/kamon-core/src/main/scala/kamon/metrics/instruments/HdrRecorder.scala index e31d0e11..28520030 100644 --- a/kamon-core/src/main/scala/kamon/metrics/instruments/HighDynamicRangeRecorder.scala +++ b/kamon-core/src/main/scala/kamon/metrics/instruments/HdrRecorder.scala @@ -18,23 +18,21 @@ package org.HdrHistogram import java.util.concurrent.atomic.AtomicLongFieldUpdater import scala.annotation.tailrec -import kamon.metrics.{ DefaultMetricSnapshot, MetricSnapshot, MetricRecorder } -import com.typesafe.config.Config -import org.HdrHistogram.HighDynamicRangeRecorder.Configuration +import kamon.metrics.{ Scale, MetricSnapshot, MetricSnapshotLike, MetricRecorder } /** * This implementation aims to be used for real time data collection where data snapshots are taken often over time. * The snapshotAndReset() operation extracts all the recorded values from the histogram and resets the counts, but still * leave it in a consistent state even in the case of concurrent modification while the snapshot is being taken. */ -class HighDynamicRangeRecorder(configuration: Configuration) - extends AtomicHistogram(1L, configuration.highestTrackableValue, configuration.significantValueDigits) with MetricRecorder { +class HdrRecorder(highestTrackableValue: Long, significantValueDigits: Int, scale: Scale) + extends AtomicHistogram(1L, highestTrackableValue, significantValueDigits) with MetricRecorder { - import HighDynamicRangeRecorder.totalCountUpdater + import HdrRecorder.totalCountUpdater def record(value: Long): Unit = recordValue(value) - def collect(): MetricSnapshot = { + def collect(): MetricSnapshotLike = { val entries = Vector.newBuilder[MetricSnapshot.Measurement] val countsLength = counts.length() @@ -66,21 +64,15 @@ class HighDynamicRangeRecorder(configuration: Configuration) while (!tryUpdateTotalCount) {} - DefaultMetricSnapshot(nrOfRecordings, entries.result()) + MetricSnapshot(nrOfRecordings, scale, entries.result()) } } -object HighDynamicRangeRecorder { +object HdrRecorder { val totalCountUpdater = AtomicLongFieldUpdater.newUpdater(classOf[AtomicHistogram], "totalCount") - def apply(configuration: Configuration): HighDynamicRangeRecorder = new HighDynamicRangeRecorder(configuration) + def apply(highestTrackableValue: Long, significantValueDigits: Int, scale: Scale): HdrRecorder = + new HdrRecorder(highestTrackableValue, significantValueDigits, scale) - case class Configuration(highestTrackableValue: Long, significantValueDigits: Int) - - case object Configuration { - def fromConfig(config: Config): Configuration = { - Configuration(config.getLong("highest-trackable-value"), config.getInt("significant-value-digits")) - } - } } |