aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/akka
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-01-28 01:25:51 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-01-28 01:25:51 -0300
commit01450abea84a4c0f9f4efe73201a8ca041acea2b (patch)
tree601b76380bd5c3ba405d6b480ddd1090b574ea98 /kamon-core/src/main/scala/akka
parentb6ea0a93e6be8e1f355f1bc993618d178d0c9372 (diff)
downloadKamon-01450abea84a4c0f9f4efe73201a8ca041acea2b.tar.gz
Kamon-01450abea84a4c0f9f4efe73201a8ca041acea2b.tar.bz2
Kamon-01450abea84a4c0f9f4efe73201a8ca041acea2b.zip
store actor metrics in the new metrics extension
Diffstat (limited to 'kamon-core/src/main/scala/akka')
-rw-r--r--kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala15
1 files changed, 9 insertions, 6 deletions
diff --git a/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala b/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
index 68d606ba..d43de311 100644
--- a/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
+++ b/kamon-core/src/main/scala/akka/instrumentation/ActorMessagePassingTracing.scala
@@ -17,12 +17,14 @@ package akka.instrumentation
import org.aspectj.lang.annotation._
import org.aspectj.lang.ProceedingJoinPoint
-import akka.actor.{ Cell, Props, ActorSystem, ActorRef }
+import akka.actor._
import akka.dispatch.{ Envelope, MessageDispatcher }
import kamon.trace.{ TraceContext, ContextAware, Trace }
-import kamon.metrics.{ ActorMetrics, HdrActorMetricsRecorder, Metrics }
+import kamon.metrics.{ ActorMetrics, Metrics }
import kamon.Kamon
import kamon.metrics.ActorMetrics.ActorMetricRecorder
+import kamon.trace.TraceContext
+import kamon.metrics.ActorMetrics.ActorMetricRecorder
@Aspect("perthis(actorCellCreation(*, *, *, *, *))")
class BehaviourInvokeTracing {
@@ -40,11 +42,11 @@ class BehaviourInvokeTracing {
actorMetrics = metricsExtension.register(path, ActorMetrics)
}
- @Pointcut("(execution(* akka.actor.ActorCell.invoke(*)) || execution(* akka.routing.RoutedActorCell.sendMessage(*))) && args(envelope)")
- def invokingActorBehaviourAtActorCell(envelope: Envelope) = {}
+ @Pointcut("(execution(* akka.actor.ActorCell.invoke(*)) || execution(* akka.routing.RoutedActorCell.sendMessage(*))) && this(cell) && args(envelope)")
+ def invokingActorBehaviourAtActorCell(cell: ActorCell, envelope: Envelope) = {}
- @Around("invokingActorBehaviourAtActorCell(envelope)")
- def aroundBehaviourInvoke(pjp: ProceedingJoinPoint, envelope: Envelope): Unit = {
+ @Around("invokingActorBehaviourAtActorCell(cell, envelope)")
+ def aroundBehaviourInvoke(pjp: ProceedingJoinPoint, cell: ActorCell, envelope: Envelope): Unit = {
val timestampBeforeProcessing = System.nanoTime()
val contextAndTimestamp = envelope.asInstanceOf[ContextAndTimestampAware]
@@ -55,6 +57,7 @@ class BehaviourInvokeTracing {
actorMetrics.map { am ⇒
am.processingTime.record(System.nanoTime() - timestampBeforeProcessing)
am.timeInMailbox.record(timestampBeforeProcessing - contextAndTimestamp.timestamp)
+ am.mailboxSize.record(cell.numberOfMessages)
}
}