aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala
diff options
context:
space:
mode:
authorIvan Topolnak <ivantopo@gmail.com>2013-08-07 19:06:33 -0300
committerIvan Topolnak <ivantopo@gmail.com>2013-08-07 19:06:33 -0300
commit923b88e8adef2f66b43e551fa4a0a1bbae5af7ff (patch)
treed555199f0c63b690ec51805b496ee2d54eb014da /kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala
parent1e6665e30d96772eab92aca4d23e176adcd88dc5 (diff)
downloadKamon-923b88e8adef2f66b43e551fa4a0a1bbae5af7ff.tar.gz
Kamon-923b88e8adef2f66b43e551fa4a0a1bbae5af7ff.tar.bz2
Kamon-923b88e8adef2f66b43e551fa4a0a1bbae5af7ff.zip
upgrading to akka 2.2
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala51
1 files changed, 51 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala b/kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala
new file mode 100644
index 00000000..70f3e54a
--- /dev/null
+++ b/kamon-core/src/main/scala/kamon/metric/NewRelicReporter.scala
@@ -0,0 +1,51 @@
+package kamon.metric
+
+import com.codahale.metrics
+import metrics._
+import java.util.concurrent.TimeUnit
+import java.util
+import com.newrelic.api.agent.NewRelic
+import scala.collection.JavaConverters._
+
+
+class NewRelicReporter(registry: MetricRegistry, name: String,filter: MetricFilter, rateUnit: TimeUnit, durationUnit: TimeUnit) extends ScheduledReporter(registry, name, filter, rateUnit, durationUnit) {
+
+
+
+ private[NewRelicReporter] def processMeter(name: String, meter: Meter) {
+ NewRelic.recordMetric("Custom/Actor/MessagesPerSecond", meter.getMeanRate().toFloat)
+ }
+
+ private[NewRelicReporter] def processCounter(name:String, counter:Counter) {
+ println(s"Logging to NewRelic: ${counter.getCount}")
+
+ }
+
+
+/* def processGauge(name: String, gauge: Gauge[_]) = {
+ println(s"the value is: "+gauge.getValue)
+ NewRelic.recordMetric("Custom/ActorSystem/activeCount", gauge.getValue.asInstanceOf[Float])
+ }*/
+
+
+ def report(gauges: util.SortedMap[String, Gauge[_]], counters: util.SortedMap[String, Counter], histograms: util.SortedMap[String, metrics.Histogram], meters: util.SortedMap[String, Meter], timers: util.SortedMap[String, Timer]) {
+ //Process Meters
+ meters.asScala.map{case(name, meter) => processMeter(name, meter)}
+
+ //Process Meters
+ counters.asScala.map{case(name, counter) => processCounter(name, counter)}
+
+ // Gauges
+ gauges.asScala.foreach{ case (name, gauge) => {
+ val measure: Float = gauge.getValue.asInstanceOf[Number].floatValue()
+ val fullMetricName = "Custom" + name
+ NewRelic.recordMetric(fullMetricName, measure)
+ }}
+ }
+
+
+}
+
+object NewRelicReporter {
+ def apply(registry: MetricRegistry) = new NewRelicReporter(registry, "NewRelic-reporter", metrics.MetricFilter.ALL, TimeUnit.SECONDS, TimeUnit.MILLISECONDS)
+} \ No newline at end of file