From 944ef29716d26910998ee20d4ff842301598e81b Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Fri, 11 Oct 2013 18:14:33 -0300 Subject: wip --- .../scala/kamon/newrelic/NewRelicReporting.scala | 20 ++++++++++++++------ .../src/main/scala/test/SimpleRequestProcessor.scala | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'kamon-core/src') diff --git a/kamon-core/src/main/scala/kamon/newrelic/NewRelicReporting.scala b/kamon-core/src/main/scala/kamon/newrelic/NewRelicReporting.scala index 6629e164..106f27e2 100644 --- a/kamon-core/src/main/scala/kamon/newrelic/NewRelicReporting.scala +++ b/kamon-core/src/main/scala/kamon/newrelic/NewRelicReporting.scala @@ -5,6 +5,7 @@ import kamon.trace.UowTrace import com.newrelic.api.agent.{Response, Request, Trace, NewRelic} import kamon.trace.UowTracing.{WebExternal, WebExternalFinish, WebExternalStart} import java.util +import java.util.Date class NewRelicReporting extends Actor { @@ -22,23 +23,30 @@ class NewRelicReporting extends Actor { uowTrace.segments.collect { case we: WebExternal => we }.foreach { webExternalTrace => val external = ((webExternalTrace.finish - webExternalTrace.start)/1E9).toFloat + println("Web External: " + webExternalTrace) NewRelic.recordMetric(s"External/${webExternalTrace.host}/http", external) NewRelic.recordMetric(s"External/${webExternalTrace.host}/all", external) NewRelic.recordMetric(s"External/${webExternalTrace.host}/http/WebTransaction/Custom" + uowTrace.name, external) } -/* - - val allExternals = uowTrace.segments.collect { case we: WebExternal => we } sortBy(_.timestamp) - def measureExternal(segments: Seq[WebExternal]): Long = { + val allExternals = uowTrace.segments.collect { case we: WebExternal => we } sortBy(_.timestamp) + def measureExternal(accum: Long, lastEnd: Long, segments: Seq[WebExternal]): Long = segments match { + case Nil => accum + case head :: tail => + if(head.start > lastEnd) + measureExternal(accum + (head.finish-head.start), head.finish, tail) + else + measureExternal(accum + (head.finish-lastEnd), head.finish, tail) } + val external = measureExternal(0, 0, allExternals) / 1E9 + - NewRelic.recordMetric(s"External/all", external) - NewRelic.recordMetric(s"External/allWeb", external)*/ + NewRelic.recordMetric(s"External/all", external.toFloat) + NewRelic.recordMetric(s"External/allWeb", external.toFloat) } } diff --git a/kamon-core/src/main/scala/test/SimpleRequestProcessor.scala b/kamon-core/src/main/scala/test/SimpleRequestProcessor.scala index ef657f24..b1727d2b 100644 --- a/kamon-core/src/main/scala/test/SimpleRequestProcessor.scala +++ b/kamon-core/src/main/scala/test/SimpleRequestProcessor.scala @@ -26,7 +26,7 @@ object SimpleRequestProcessor extends App with SimpleRoutingApp with RequestBuil path("test"){ uow { complete { - val futures = pipeline(Get("http://10.254.10.57:8000/")).map(r => "Ok") :: pipeline(Get("http://10.254.10.57:8000/")).map(r => "Ok") :: Nil + val futures = pipeline(Get("http://10.254.209.14:8000/")).map(r => "Ok") :: pipeline(Get("http://10.254.209.14:8000/")).map(r => "Ok") :: Nil Future.sequence(futures).map(l => "Ok") } -- cgit v1.2.3