aboutsummaryrefslogtreecommitdiff
path: root/kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala
diff options
context:
space:
mode:
authorDiego Parra <diegolparra@gmail.com>2015-12-24 12:30:58 -0300
committerDiego Parra <diegolparra@gmail.com>2015-12-24 12:30:58 -0300
commit09ad0ba8b0034094791cb9e35f89bec43d1d7924 (patch)
tree9231200ae53fc6ee64811b9966d6cbbf24bc2e29 /kamon-statsd/src/main/scala/kamon/statsd/UDPBasedStatsDMetricsSender.scala
parent0d764b2a20e2e4f595c5a485edbdb0b9d687f029 (diff)
parentcc620d885fe1f97db719418721ad84757259f371 (diff)
downloadKamon-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.scala33
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 {