aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/akka/MailboxAspect.scala
diff options
context:
space:
mode:
authorDiego Parra <diegolparra@gmail.com>2013-05-09 00:44:02 -0300
committerDiego Parra <diegolparra@gmail.com>2013-05-09 00:44:02 -0300
commitaf23f1cd919194fe59d6fa31a612c003b5c609d2 (patch)
treedf76c36febaebf8638153aeff775dca532eaf130 /src/main/scala/akka/MailboxAspect.scala
parent6ee6ea75f1f230b5156a546c1e0f16f6952f99a0 (diff)
downloadKamon-af23f1cd919194fe59d6fa31a612c003b5c609d2.tar.gz
Kamon-af23f1cd919194fe59d6fa31a612c003b5c609d2.tar.bz2
Kamon-af23f1cd919194fe59d6fa31a612c003b5c609d2.zip
first approach to send mailbox and pool metrics
Diffstat (limited to 'src/main/scala/akka/MailboxAspect.scala')
-rw-r--r--src/main/scala/akka/MailboxAspect.scala37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/main/scala/akka/MailboxAspect.scala b/src/main/scala/akka/MailboxAspect.scala
index 3dfc9c6a..f52a2eee 100644
--- a/src/main/scala/akka/MailboxAspect.scala
+++ b/src/main/scala/akka/MailboxAspect.scala
@@ -1,26 +1,31 @@
package akka
-import org.aspectj.lang.annotation.{Pointcut, Before, Aspect}
-import java.util.concurrent.{TimeUnit, Executors}
+import org.aspectj.lang.annotation._
+import scala.concurrent.duration._
+import com.newrelic.api.agent.NewRelic
-@Aspect
-class MailboxAspect {
+@Aspect("perthis(mailboxMonitor())")
+class MailboxAspect extends ActorSystem {
- @Pointcut("execution(akka.dispatch.Mailbox.new(..))")
- protected def mailboxMonitor:Unit = {}
+ @Pointcut("execution(akka.dispatch.Mailbox.new(..)) && !within(MailboxAspect)")
+ protected def mailboxMonitor():Unit = {}
@Before("mailboxMonitor() && this(mb)")
def before(mb: akka.dispatch.Mailbox) : Unit = {
- val scheduler = Executors.newScheduledThreadPool(1);
-
- scheduler.scheduleAtFixedRate(new Runnable {
+ actorSystem.scheduler.schedule(5 seconds, 6 second, new Runnable {
def run() {
- println("Mailbox: " + mb.actor.self.path)
- println("NOM: " + mb.numberOfMessages)
- println("Messages: " + mb.hasMessages)
- print("Dispatcher throughput: " + mb.dispatcher.throughput)
- println(mb.dispatcher.id)
+
+ val actorName = mb.actor.self.path.toString
+
+ println(s"Sending metrics to Newrelic MailBoxMonitor -> ${actorName}")
+
+
+ NewRelic.recordMetric(s"${actorName}:Mailbox:NumberOfMessages",mb.numberOfMessages)
+ NewRelic.recordMetric(s"${actorName}:Mailbox:MailboxDispatcherThroughput",mb.dispatcher.throughput)
+
+ NewRelic.addCustomParameter(s"${actorName}:Mailbox:Status", mb.hasMessages.toString)
+ NewRelic.addCustomParameter(s"${actorName}:Mailbox:HasMessages", mb.hasMessages.toString)
}
- }, 6, 4, TimeUnit.SECONDS)
+ })
}
-}
+} \ No newline at end of file