aboutsummaryrefslogtreecommitdiff
path: root/kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2014-04-02 17:55:49 -0300
committerDiego <diegolparra@gmail.com>2014-04-02 20:12:39 -0300
commit5da2099182b4b2b8678ed97fcaa6d74f02bb5544 (patch)
tree83d19f83ca6c2259f5e497d40e7e008cc1b3baa3 /kamon-statsd/src/main/scala/kamon/statsd/Statsd.scala
parent02370563c32fb4dbee848097a5e7723c902a44d4 (diff)
downloadKamon-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.scala31
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
+