aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/akka/PoolMonitorAspect.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/akka/PoolMonitorAspect.scala')
-rw-r--r--src/main/scala/akka/PoolMonitorAspect.scala32
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)
+ }
}