diff options
author | Diego <diegolparra@gmail.com> | 2014-04-02 17:55:49 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2014-04-02 20:12:39 -0300 |
commit | 5da2099182b4b2b8678ed97fcaa6d74f02bb5544 (patch) | |
tree | 83d19f83ca6c2259f5e497d40e7e008cc1b3baa3 /kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala | |
parent | 02370563c32fb4dbee848097a5e7723c902a44d4 (diff) | |
download | Kamon-5da2099182b4b2b8678ed97fcaa6d74f02bb5544.tar.gz Kamon-5da2099182b4b2b8678ed97fcaa6d74f02bb5544.tar.bz2 Kamon-5da2099182b4b2b8678ed97fcaa6d74f02bb5544.zip |
WIP:First implementation of statsd client
Diffstat (limited to 'kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala')
-rw-r--r-- | kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala b/kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala index 33344ca9..4e0f0dfe 100644 --- a/kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala +++ b/kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala @@ -16,8 +16,11 @@ package kamon.statsd -import akka.actor.{ ExtendedActorSystem, Extension, ExtensionIdProvider, ExtensionId } +import akka.actor._ import kamon.Kamon +import kamon.statsd.client.StatsdMetricsSender +import kamon.metrics.Subscriptions.TickMetricSnapshot +import kamon.metrics.{CustomMetric, TraceMetrics, Metrics} object Statsd extends ExtensionId[StatsdExtension] with ExtensionIdProvider { override def lookup(): ExtensionId[_ <: Extension] = Statsd @@ -25,17 +28,29 @@ object Statsd extends ExtensionId[StatsdExtension] with ExtensionIdProvider { } class StatsdExtension(private val system: ExtendedActorSystem) extends Kamon.Extension { - publishInfoMessage(system, "Statsd Extension Loaded!!") private val config = system.settings.config.getConfig("kamon.statsd") - val prefix = config.getString("prefix") val hostname = config.getString("hostname") val port = config.getInt("port") + val prefix = config.getString("prefix") + + val statsdMetricsListener = system.actorOf(Props(new StatsdMetricsListener(hostname, port, prefix)), "kamon-statsd-metrics-listener") + + Kamon(Metrics)(system).subscribe(TraceMetrics, "*", statsdMetricsListener, permanently = true) + Kamon(Metrics)(system).subscribe(CustomMetric, "*", statsdMetricsListener, permanently = true) +} + +class StatsdMetricsListener(host:String, port:Int, prefix:String) extends Actor with ActorLogging { + import java.net.{InetAddress, InetSocketAddress} + + log.info("Starting the Kamon(Statsd) extension") + + val statsdActor = context.actorOf(StatsdMetricsSender.props(prefix, new InetSocketAddress(InetAddress.getByName(host), port)), "StatsdSender") + + def receive = { + case tick: TickMetricSnapshot ⇒ statsdActor.forward(tick) + } } -object MetricsTypes{ - case class Counter(key: String, value: Long = 1, samplingRate: Double = 1.0) - case class Timing(key: String, millis: Long, samplingRate: Double = 1.0) - case class Gauge(key: String, value: Long) -}
\ No newline at end of file + |