From b03b74291b60e9882e815d7823221eacbbf3cfca Mon Sep 17 00:00:00 2001 From: Diego Parra Date: Fri, 23 Aug 2013 04:19:17 -0300 Subject: WIP:first implementation of Kamon Dashboard --- kamon-core/src/main/main.iml | 12 ++++++++++++ kamon-core/src/main/resources/application.conf | 3 +++ kamon-core/src/main/scala/kamon/Kamon.scala | 12 ++++++------ kamon-core/src/main/scala/kamon/executor/eventbus.scala | 6 +++--- .../kamon/instrumentation/ActorRefTellInstrumentation.scala | 3 +-- kamon-core/src/main/scala/kamon/metric/Metrics.scala | 6 +++--- kamon-core/src/test/test.iml | 12 ++++++++++++ 7 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 kamon-core/src/main/main.iml create mode 100644 kamon-core/src/test/test.iml (limited to 'kamon-core') diff --git a/kamon-core/src/main/main.iml b/kamon-core/src/main/main.iml new file mode 100644 index 00000000..702d93f1 --- /dev/null +++ b/kamon-core/src/main/main.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/kamon-core/src/main/resources/application.conf b/kamon-core/src/main/resources/application.conf index 1378e75e..2f8d8d87 100644 --- a/kamon-core/src/main/resources/application.conf +++ b/kamon-core/src/main/resources/application.conf @@ -1,6 +1,9 @@ akka { loglevel = DEBUG stdout-loglevel = DEBUG + + extensions = ["kamon.dashboard.DashboardExtension"] + actor { default-dispatcher { fork-join-executor { diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 07773c55..298f43eb 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -1,17 +1,17 @@ package kamon import akka.actor.{Actor, Props, ActorSystem} -import scala.collection.JavaConverters._ -import java.util.concurrent.ConcurrentHashMap -import kamon.metric.{HistogramSnapshot, Histogram, Atomic, ActorSystemMetrics} -import scala.concurrent.duration.{FiniteDuration, Duration} +import kamon.metric.{HistogramSnapshot, ActorSystemMetrics} +import scala.concurrent.duration.FiniteDuration import com.newrelic.api.agent.NewRelic +import scala.collection.concurrent.TrieMap object Kamon { implicit lazy val actorSystem = ActorSystem("kamon") object Metric { - val actorSystems = new ConcurrentHashMap[String, ActorSystemMetrics] asScala + + val actorSystems = TrieMap.empty[String, ActorSystemMetrics] def actorSystemNames: List[String] = actorSystems.keys.toList def registerActorSystem(name: String) = actorSystems.getOrElseUpdate(name, ActorSystemMetrics(name)) @@ -34,7 +34,7 @@ object Tracer { def clear = ctx.remove() def set(traceContext: TraceContext) = ctx.set(Some(traceContext)) - def start = ??? //set(newTraceContext) + def start = set(newTraceContext) def stop = ctx.get match { case Some(context) => context.close case None => diff --git a/kamon-core/src/main/scala/kamon/executor/eventbus.scala b/kamon-core/src/main/scala/kamon/executor/eventbus.scala index 33ff4a4e..a1c099d4 100644 --- a/kamon-core/src/main/scala/kamon/executor/eventbus.scala +++ b/kamon-core/src/main/scala/kamon/executor/eventbus.scala @@ -36,7 +36,7 @@ case class Pong() class PingActor extends Actor with ActorLogging { - val pong = context.actorOf(Props[PongActor]) + val pong = context.actorOf(Props[PongActor], "Pong") val random = new Random() def receive = { case Pong() => { @@ -68,7 +68,7 @@ object TryAkka extends App{ Tracer.start for(i <- 1 to 4) { - val ping = system.actorOf(Props[PingActor]) + val ping = system.actorOf(Props[PingActor], "Ping" + i) ping ! Pong() } @@ -86,7 +86,7 @@ object TryAkka extends App{ - Tracer.start + //Tracer.start Tracer.context.get.append(CodeBlockExecutionTime("some-block", System.nanoTime(), System.nanoTime())) threadPrintln("Before doing it") diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala index 36dd9d0b..212eab2c 100644 --- a/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala +++ b/kamon-core/src/main/scala/kamon/instrumentation/ActorRefTellInstrumentation.scala @@ -5,9 +5,8 @@ import org.aspectj.lang.ProceedingJoinPoint import akka.actor.{Props, ActorSystem, ActorRef} import kamon.{Tracer, TraceContext} import akka.dispatch.{MessageDispatcher, Envelope} -import com.codahale.metrics.{Timer, ExponentiallyDecayingReservoir, Histogram} +import com.codahale.metrics.Timer import kamon.metric.{MetricDirectory, Metrics} -import com.codahale.metrics import scala.Some case class TraceableMessage(traceContext: Option[TraceContext], message: Any, timer: Timer.Context) diff --git a/kamon-core/src/main/scala/kamon/metric/Metrics.scala b/kamon-core/src/main/scala/kamon/metric/Metrics.scala index cdc0a334..edf532ae 100644 --- a/kamon-core/src/main/scala/kamon/metric/Metrics.scala +++ b/kamon-core/src/main/scala/kamon/metric/Metrics.scala @@ -1,9 +1,10 @@ package kamon.metric -import java.util.concurrent.{ConcurrentHashMap, ConcurrentSkipListSet, TimeUnit} +import java.util.concurrent.TimeUnit import akka.actor.ActorRef import com.codahale.metrics import com.codahale.metrics.{MetricFilter, Metric, ConsoleReporter, MetricRegistry} +import scala.collection.concurrent.TrieMap object Metrics { @@ -85,8 +86,7 @@ trait HistogramSnapshot { case class ActorSystemMetrics(actorSystemName: String) { - import scala.collection.JavaConverters._ - val dispatchers = new ConcurrentHashMap[String, DispatcherMetricCollector] asScala + val dispatchers = TrieMap.empty[String, DispatcherMetricCollector] private[this] def createDispatcherCollector: DispatcherMetricCollector = DispatcherMetricCollector(CodahaleHistogram(), CodahaleHistogram(), CodahaleHistogram()) diff --git a/kamon-core/src/test/test.iml b/kamon-core/src/test/test.iml new file mode 100644 index 00000000..90381726 --- /dev/null +++ b/kamon-core/src/test/test.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + -- cgit v1.2.3