aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/kamon/metric/Metrics.scala
diff options
context:
space:
mode:
authorIvan Topolnak <ivantopo@gmail.com>2013-07-15 18:14:07 -0300
committerIvan Topolnak <ivantopo@gmail.com>2013-07-15 18:14:07 -0300
commitafda5a6ac02a5cd314638e40250b49f66cf3b419 (patch)
treed0f2337f570d883497e78c482629f2af60c95366 /src/main/scala/kamon/metric/Metrics.scala
parente8dd6c83986f1ecd2d717c39bffe900b23b68854 (diff)
downloadKamon-afda5a6ac02a5cd314638e40250b49f66cf3b419.tar.gz
Kamon-afda5a6ac02a5cd314638e40250b49f66cf3b419.tar.bz2
Kamon-afda5a6ac02a5cd314638e40250b49f66cf3b419.zip
still a disaster, need to sync
Diffstat (limited to 'src/main/scala/kamon/metric/Metrics.scala')
-rw-r--r--src/main/scala/kamon/metric/Metrics.scala57
1 files changed, 28 insertions, 29 deletions
diff --git a/src/main/scala/kamon/metric/Metrics.scala b/src/main/scala/kamon/metric/Metrics.scala
index 352c51a0..b0dc8ec5 100644
--- a/src/main/scala/kamon/metric/Metrics.scala
+++ b/src/main/scala/kamon/metric/Metrics.scala
@@ -1,19 +1,12 @@
package kamon.metric
import java.util.concurrent.{ConcurrentHashMap, ConcurrentSkipListSet, TimeUnit}
-import com.codahale.metrics._
import akka.actor.ActorRef
-import java.util.concurrent.atomic.AtomicReference
import com.codahale.metrics
-
-trait MetricDepot {
- def include(name: String, metric: Metric): Unit
- def exclude(name: String): Unit
-}
+import com.codahale.metrics.{MetricFilter, Metric, ConsoleReporter, MetricRegistry}
-
-object Metrics extends MetricDepot {
+object Metrics {
val registry: MetricRegistry = new MetricRegistry
val consoleReporter = ConsoleReporter.forRegistry(registry).convertDurationsTo(TimeUnit.NANOSECONDS)
@@ -64,48 +57,54 @@ object MetricDirectory {
-case class ActorSystemMetrics(actorSystemName: String) {
- val dispatchers = new ConcurrentHashMap[String, DispatcherMetrics]
- def registerDispatcher(dispatcherName: String): Option[DispatcherMetricCollector] = {
- ???
- }
-}
-case class DispatcherMetricCollector(activeThreadCount: ValueDistributionCollector, poolSize: ValueDistributionCollector, queueSize: ValueDistributionCollector)
-trait ValueDistributionCollector {
+case class DispatcherMetricCollector(activeThreadCount: Histogram, poolSize: Histogram, queueSize: Histogram)
+
+
+
+
+trait Histogram {
def update(value: Long): Unit
- def snapshot: HistogramLike
+ def snapshot: HistogramSnapshot
}
-trait HistogramLike {
- def median: Long
- def max: Long
- def min: Long
+trait HistogramSnapshot {
+ def median: Double
+ def max: Double
+ def min: Double
}
-case class CodaHaleValueDistributionCollector extends ValueDistributionCollector {
- private[this] val histogram = new Histogram(new metrics.ExponentiallyDecayingReservoir())
- def median: Long = ???
+case class ActorSystemMetrics(actorSystemName: String) {
+ val dispatchers = new ConcurrentHashMap[String, DispatcherMetricCollector]
- def max: Long = ???
+ private[this] def createDispatcherCollector: DispatcherMetricCollector = DispatcherMetricCollector(CodahaleHistogram(), CodahaleHistogram(), CodahaleHistogram())
- def min: Long = ???
+ def registerDispatcher(dispatcherName: String): Option[DispatcherMetricCollector] = Some(createDispatcherCollector)
+
+}
- def snapshot: HistogramLike = histogram.getSnapshot
+
+case class CodahaleHistogram() extends Histogram {
+ private[this] val histogram = new com.codahale.metrics.Histogram(new metrics.ExponentiallyDecayingReservoir())
def update(value: Long) = histogram.update(value)
-}
+ def snapshot: HistogramSnapshot = {
+ val snapshot = histogram.getSnapshot
+ CodahaleHistogramSnapshot(snapshot.getMedian, snapshot.getMax, snapshot.getMin)
+ }
+}
+case class CodahaleHistogramSnapshot(median: Double, max: Double, min: Double) extends HistogramSnapshot