diff options
Diffstat (limited to 'kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala')
-rw-r--r-- | kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala index d0a71c08..53240c89 100644 --- a/kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/Apdex.scala @@ -17,7 +17,7 @@ package kamon.newrelic import akka.actor.Actor import kamon.trace.UowTrace -import com.newrelic.api.agent.{NewRelic => NRAgent} +import com.newrelic.api.agent.{ NewRelic ⇒ NRAgent } import kamon.trace.UowTracing.WebExternal class Apdex extends Actor { @@ -28,7 +28,7 @@ class Apdex extends Actor { var frustrated: Int = 0 def receive = { - case trace: UowTrace => recordTransaction(trace) + case trace: UowTrace ⇒ recordTransaction(trace) } @@ -41,26 +41,25 @@ class Apdex extends Actor { def total: Int = satisfied + tolerating + frustrated def updateStats(sampleTime: Double): Unit = { - if(sampleTime < t) + if (sampleTime < t) satisfied += 1 + else if (sampleTime >= t && sampleTime <= 4 * t) + tolerating += 1 else - if(sampleTime >= t && sampleTime <= 4*t) - tolerating += 1 - else - frustrated += 1 + frustrated += 1 } def recordTransaction(uowTrace: UowTrace): Unit = { - val time = ((uowTrace.segments.last.timestamp - uowTrace.segments.head.timestamp)/1E9) + val time = ((uowTrace.segments.last.timestamp - uowTrace.segments.head.timestamp) / 1E9) updateStats(time) - NRAgent.recordMetric("WebTransaction/Custom" + uowTrace.name, time.toFloat ) + NRAgent.recordMetric("WebTransaction/Custom" + uowTrace.name, time.toFloat) NRAgent.recordMetric("WebTransaction", time.toFloat) NRAgent.recordMetric("HttpDispatcher", time.toFloat) - uowTrace.segments.collect { case we: WebExternal => we }.foreach { webExternalTrace => - val external = ((webExternalTrace.finish - webExternalTrace.start)/1E9).toFloat + uowTrace.segments.collect { case we: WebExternal ⇒ we }.foreach { webExternalTrace ⇒ + val external = ((webExternalTrace.finish - webExternalTrace.start) / 1E9).toFloat println("Web External: " + webExternalTrace) NRAgent.recordMetric(s"External/${webExternalTrace.host}/http", external) @@ -68,22 +67,19 @@ class Apdex extends Actor { NRAgent.recordMetric(s"External/${webExternalTrace.host}/http/WebTransaction/Custom" + uowTrace.name, external) } - - val allExternals = uowTrace.segments.collect { case we: WebExternal => we } sortBy(_.timestamp) - + 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) + 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) + measureExternal(accum + (head.finish - lastEnd), head.finish, tail) } val external = measureExternal(0, 0, allExternals) / 1E9 - NRAgent.recordMetric(s"External/all", external.toFloat) NRAgent.recordMetric(s"External/allWeb", external.toFloat) |