aboutsummaryrefslogtreecommitdiff
path: root/kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-04-03 09:21:15 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-04-03 09:21:15 -0300
commit0819320d7f20c78ad096c21c6aedb3536758792b (patch)
treecaa0a0a9052663531583d343a7639ef92d335782 /kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala
parent4026aa0269f6aad0bc1acaf837fc51f4f0da504e (diff)
downloadKamon-0819320d7f20c78ad096c21c6aedb3536758792b.tar.gz
Kamon-0819320d7f20c78ad096c21c6aedb3536758792b.tar.bz2
Kamon-0819320d7f20c78ad096c21c6aedb3536758792b.zip
minor reorganization and includes filter
Diffstat (limited to 'kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala')
-rw-r--r--kamon-statsd/src/main/scala/kamon/statsd/StatsdMetricsSender.scala32
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