diff options
Diffstat (limited to 'src/main/scala/akka/PoolMonitorAspect.scala')
-rw-r--r-- | src/main/scala/akka/PoolMonitorAspect.scala | 32 |
1 files changed, 6 insertions, 26 deletions
diff --git a/src/main/scala/akka/PoolMonitorAspect.scala b/src/main/scala/akka/PoolMonitorAspect.scala index 20d002a2..c83defa9 100644 --- a/src/main/scala/akka/PoolMonitorAspect.scala +++ b/src/main/scala/akka/PoolMonitorAspect.scala @@ -1,36 +1,16 @@ package akka -import org.aspectj.lang.annotation.{Pointcut, Before, Aspect} -import scala.concurrent.duration._ -import com.newrelic.api.agent.NewRelic +import org.aspectj.lang.annotation._ @Aspect("perthis(poolMonitor())") -class PoolMonitorAspect extends ActorSystemHolder { +class PoolMonitorAspect { + println("Created PoolMonitorAspect") @Pointcut("execution(scala.concurrent.forkjoin.ForkJoinPool.new(..)) && !within(PoolMonitorAspect)") protected def poolMonitor:Unit = {} @Before("poolMonitor() && this(pool)") - def beforePoolInstantiation(pool: scala.concurrent.forkjoin.ForkJoinPool) { - actorSystem.scheduler.schedule(10 seconds, 6 second, new Runnable { - def run() { - val poolName = pool.getClass.getSimpleName - - println(s"Sending metrics to Newrelic PoolMonitor -> ${poolName}") - PoolConverter.toMap(pool).map{case(k,v) => NewRelic.recordMetric(s"${poolName}:${k}",v)} - } - }) - } -} - -object PoolConverter { - def toMap(pool: scala.concurrent.forkjoin.ForkJoinPool):Map[String,Int] = Map[String,Int]( - "ActiveThreadCount" -> pool.getActiveThreadCount, - "Parallelism" -> pool.getParallelism, - "PoolSize" -> pool.getPoolSize, - "QueuedSubmissionCount" -> pool.getQueuedSubmissionCount, - "StealCount" -> pool.getStealCount.toInt, - "QueuedTaskCount" -> pool.getQueuedTaskCount.toInt, - "RunningThreadCount" -> pool.getRunningThreadCount - ) + def beforePoolInstantiation(pool: scala.concurrent.forkjoin.ForkJoinPool):Unit = { + Tracer.collectPool(pool) + } } |