diff options
Diffstat (limited to 'kamon-dashboard/src/main/scala/kamon/dashboard')
-rw-r--r-- | kamon-dashboard/src/main/scala/kamon/dashboard/DashboardService.scala | 29 | ||||
-rw-r--r-- | kamon-dashboard/src/main/scala/kamon/dashboard/protocol/DashboardProtocols.scala | 32 |
2 files changed, 40 insertions, 21 deletions
diff --git a/kamon-dashboard/src/main/scala/kamon/dashboard/DashboardService.scala b/kamon-dashboard/src/main/scala/kamon/dashboard/DashboardService.scala index e2eb7890..8edbebde 100644 --- a/kamon-dashboard/src/main/scala/kamon/dashboard/DashboardService.scala +++ b/kamon-dashboard/src/main/scala/kamon/dashboard/DashboardService.scala @@ -5,7 +5,6 @@ import akka.actor._ import spray.routing.directives.LogEntry import akka.event.Logging import spray.http.MediaTypes._ -import spray.json._ import spray.httpx.SprayJsonSupport import kamon.Kamon import spray.http.HttpRequest @@ -48,23 +47,10 @@ trait DashboardPages extends HttpService { trait DashboardMetricsApi extends HttpService with SprayJsonSupport{ - case class TimerDataHolder(name:String, count:Double, percentile99:Double) - case class TotalMessages(messages:Double, actors:Long, data:Seq[TimerDataHolder]) - case class DispatcherMetricCollectorHolder(name:String, activeThreadCount: Double, poolSize: Double, queueSize:Double) - case class ActorSystemMetricsHolder(actorSystem:String, dispatchers:Map[String, DispatcherMetricCollectorHolder]) - - object DashboardJsonProtocol extends DefaultJsonProtocol { - implicit val TimerDataHolderJsonProtocol = jsonFormat3(TimerDataHolder) - implicit val TotalMessagesJsonProtocol = jsonFormat3(TotalMessages) - implicit val DispatcherMetricCollectorJsonProtocol = jsonFormat4(DispatcherMetricCollectorHolder) - implicit val ActorSystemMetricsJsonProtocol = jsonFormat2(ActorSystemMetricsHolder) - } - - import spray.httpx.marshalling._ import Kamon.Metric._ import scala.collection.JavaConverters._ import kamon.metric.Metrics._ - import DashboardJsonProtocol._ + import kamon.dashboard.protocol.DashboardProtocols._ val metricFilter = new MetricFilter() { def matches(name: String, m:Metric) = { @@ -87,16 +73,17 @@ trait DashboardMetricsApi extends HttpService with SprayJsonSupport{ pathPrefix("metrics") { path("dispatchers") { get { - complete { - marshal(actorSystemMetrics) - } + complete (actorSystemMetrics) } } ~ path("messages") { get { - complete { - marshal(withTotalMessages(timerMetrics)) - } + complete (withTotalMessages(timerMetrics)) + } + } ~ + path("actorTree") { + get { + complete (ActorTree("/", ActorTree("Pang", ActorTree("Pang-children") :: Nil) :: ActorTree("Ping") :: ActorTree("Pong", ActorTree("Pong-children") :: Nil):: Nil)) } } } diff --git a/kamon-dashboard/src/main/scala/kamon/dashboard/protocol/DashboardProtocols.scala b/kamon-dashboard/src/main/scala/kamon/dashboard/protocol/DashboardProtocols.scala new file mode 100644 index 00000000..3f7ed6dc --- /dev/null +++ b/kamon-dashboard/src/main/scala/kamon/dashboard/protocol/DashboardProtocols.scala @@ -0,0 +1,32 @@ +package kamon.dashboard.protocol + +import spray.json.{RootJsonFormat, DefaultJsonProtocol} + +object DashboardProtocols { + + case class TimerDataHolder(name:String, count:Double, percentile99:Double) + case class TotalMessages(messages:Double, actors:Long, data:Seq[TimerDataHolder]) + case class DispatcherMetricCollectorHolder(name:String, activeThreadCount: Double, poolSize: Double, queueSize:Double) + case class ActorSystemMetricsHolder(actorSystem:String, dispatchers:Map[String, DispatcherMetricCollectorHolder]) + case class ActorTree(name:String, children:List[ActorTree] = Nil) + + object TimerDataHolder extends DefaultJsonProtocol { + implicit val TimerDataHolderJsonProtocol = jsonFormat3(apply) + } + + object TotalMessages extends DefaultJsonProtocol { + implicit val TotalMessagesJsonProtocol = jsonFormat3(apply) + } + + object DispatcherMetricCollectorHolder extends DefaultJsonProtocol { + implicit val DispatcherMetricCollectorJsonProtocol = jsonFormat4(apply) + } + + object ActorSystemMetricsHolder extends DefaultJsonProtocol { + implicit val ActorSystemMetricsJsonProtocol = jsonFormat2(apply) + } + + object ActorTree extends DefaultJsonProtocol { + implicit val ActorTreeJsonProtocol:RootJsonFormat[ActorTree] = rootFormat(lazyFormat(jsonFormat(apply, "name", "children"))) + } +} |