diff options
author | Diego Parra <diegolparra@gmail.com> | 2015-12-24 12:30:58 -0300 |
---|---|---|
committer | Diego Parra <diegolparra@gmail.com> | 2015-12-24 12:30:58 -0300 |
commit | 09ad0ba8b0034094791cb9e35f89bec43d1d7924 (patch) | |
tree | 9231200ae53fc6ee64811b9966d6cbbf24bc2e29 /kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala | |
parent | 0d764b2a20e2e4f595c5a485edbdb0b9d687f029 (diff) | |
parent | cc620d885fe1f97db719418721ad84757259f371 (diff) | |
download | Kamon-09ad0ba8b0034094791cb9e35f89bec43d1d7924.tar.gz Kamon-09ad0ba8b0034094791cb9e35f89bec43d1d7924.tar.bz2 Kamon-09ad0ba8b0034094791cb9e35f89bec43d1d7924.zip |
Merge pull request #294 from jozic/scale
Scale
Diffstat (limited to 'kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala')
-rw-r--r-- | kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala b/kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala index 9e856eda..88609686 100644 --- a/kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala +++ b/kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala @@ -19,31 +19,43 @@ package kamon.statsd import java.net.InetSocketAddress import java.text.{ DecimalFormat, DecimalFormatSymbols } import java.util.Locale + import akka.actor.{ Actor, ActorRef, ActorSystem } import akka.io.{ IO, Udp } import akka.util.ByteString import com.typesafe.config.Config import kamon.metric.SubscriptionsDispatcher.TickMetricSnapshot +trait StatsDValueFormatters { + + val symbols = DecimalFormatSymbols.getInstance(Locale.US) + symbols.setDecimalSeparator('.') + // Just in case there is some weird locale config we are not aware of. + + // Absurdly high number of decimal digits, let the other end lose precision if it needs to. + val samplingRateFormat = new DecimalFormat("#.################################################################", symbols) + + def encodeStatsDTimer(level: Long, count: Long): String = { + val samplingRate: Double = 1D / count + level.toString + "|ms" + (if (samplingRate != 1D) "|@" + samplingRateFormat.format(samplingRate) else "") + } + + def encodeStatsDCounter(count: Long): String = count.toString + "|c" +} + /** * Base class for different StatsD senders utilizing UDP protocol. It implies use of one statsd server. * @param statsDConfig Config to read settings specific to this sender * @param metricKeyGenerator Key generator for all metrics sent by this sender */ abstract class UDPBasedStatsDMetricsSender(statsDConfig: Config, metricKeyGenerator: MetricKeyGenerator) - extends Actor with UdpExtensionProvider { + extends Actor with UdpExtensionProvider with StatsDValueFormatters { import context.system val statsDHost = statsDConfig.getString("hostname") val statsDPort = statsDConfig.getInt("port") - val symbols = DecimalFormatSymbols.getInstance(Locale.US) - symbols.setDecimalSeparator('.') // Just in case there is some weird locale config we are not aware of. - - // Absurdly high number of decimal digits, let the other end lose precision if it needs to. - val samplingRateFormat = new DecimalFormat("#.################################################################", symbols) - udpExtension ! Udp.SimpleSender lazy val socketAddress = new InetSocketAddress(statsDHost, statsDPort) @@ -61,13 +73,6 @@ abstract class UDPBasedStatsDMetricsSender(statsDConfig: Config, metricKeyGenera def writeMetricsToRemote(tick: TickMetricSnapshot, flushToUDP: String ⇒ Unit): Unit - def encodeStatsDTimer(level: Long, count: Long): String = { - val samplingRate: Double = 1D / count - level.toString + "|ms" + (if (samplingRate != 1D) "|@" + samplingRateFormat.format(samplingRate) else "") - } - - def encodeStatsDCounter(count: Long): String = count.toString + "|c" - } trait UdpExtensionProvider { |