diff options
Diffstat (limited to 'kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala')
-rw-r--r-- | kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala | 32 |
1 files changed, 3 insertions, 29 deletions
diff --git a/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala b/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala index 96d83eb8..cff7a4a1 100644 --- a/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala +++ b/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala @@ -22,7 +22,6 @@ import java.net.InetSocketAddress import akka.util.ByteString class StatsdMetricsSender(statPrefix: String, remote: InetSocketAddress) extends Actor with ActorLogging { - import StatsdMetricsSender._ import context.system IO(Udp) ! Udp.SimpleSender @@ -33,39 +32,14 @@ class StatsdMetricsSender(statPrefix: String, remote: InetSocketAddress) extends } def ready(send: ActorRef): Receive = { - case metric: StatsdMetric ⇒ - send ! Udp.Send(toByteString(statPrefix, metric), remote) + // TODO: batch writes + case metric: StatsD.Metric ⇒ + send ! Udp.Send(metric.toByteString, remote) case _ ⇒ log.error("Unknown Metric") } } object StatsdMetricsSender { - - sealed trait StatsdMetric - - case class Counter(key: String, value: Long = 1, suffix: String = "c", samplingRate: Double = 1.0) extends StatsdMetric - case class Timing(key: String, millis: Long, suffix: String = "ms", samplingRate: Double = 1.0) extends StatsdMetric - case class Gauge(key: String, value: Long, suffix: String = "g", samplingRate: Double = 1.0) extends StatsdMetric - def props(statPrefix: String, remote: InetSocketAddress): Props = Props(new StatsdMetricsSender(statPrefix, remote)) - - def toByteString(statPrefix: String, metric: StatsdMetric): ByteString = metric match { - case Counter(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - case Timing(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - case Gauge(key, value, suffix, samplingRate) ⇒ statFor(statPrefix, key, value, suffix, samplingRate) - } - - /* - * Creates the stat string to send to statsd. - * For counters, it provides something like {@code key:value|c}. - * For timing, it provides something like {@code key:millis|ms}. - * If sampling rate is less than 1, it provides something like {@code key:value|type|@rate} - */ - private[this] def statFor(statPrefix: String, key: String, value: Long, suffix: String, samplingRate: Double): ByteString = { - samplingRate match { - case x if x >= 1.0 ⇒ ByteString(s"$statPrefix.$key:$value|$suffix") - case _ ⇒ ByteString(s"$statPrefix.$key:$value|$suffix|@$samplingRate") - } - } }
\ No newline at end of file |