aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metrics/instruments
diff options
context:
space:
mode:
authorIvan Topolnak <itopolnak@despegar.com>2014-03-07 18:08:01 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-03-11 21:14:53 -0300
commitb6af84ab6b60b4ca6c0389c8c3622db3d3c27915 (patch)
tree1f89896820e36d59daadef7699b434de1051be42 /kamon-core/src/main/scala/kamon/metrics/instruments
parentccbcc55282251b5e6d4f41384730232a8f0e7d05 (diff)
downloadKamon-b6af84ab6b60b4ca6c0389c8c3622db3d3c27915.tar.gz
Kamon-b6af84ab6b60b4ca6c0389c8c3622db3d3c27915.tar.bz2
Kamon-b6af84ab6b60b4ca6c0389c8c3622db3d3c27915.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"))
- }
- }
}