diff options
Diffstat (limited to 'kamon-datadog')
-rw-r--r-- | kamon-datadog/src/main/resources/reference.conf | 10 | ||||
-rw-r--r-- | kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala | 13 |
2 files changed, 21 insertions, 2 deletions
diff --git a/kamon-datadog/src/main/resources/reference.conf b/kamon-datadog/src/main/resources/reference.conf index 7da8e645..78b58a6e 100644 --- a/kamon-datadog/src/main/resources/reference.conf +++ b/kamon-datadog/src/main/resources/reference.conf @@ -37,6 +37,16 @@ kamon { # this pattern: # application.entity-name.metric-name application-name = "kamon" + + # All time values are collected in nanoseconds, + # to scale before sending to datadog set "time-units" to "s" or "ms" or "µs". + # Value "ns" is equivalent to omitting the setting + # time-units = "ns" + + # All memory values are collected in bytes, + # to scale before sending to datadog set "memory-units" to "gb" or "mb" or "kb". + # Value "b" is equivalent to omitting the setting + # memory-units = "b" } modules { diff --git a/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala b/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala index ab909055..cde80531 100644 --- a/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala +++ b/kamon-datadog/src/main/scala/kamon/datadog/Datadog.scala @@ -27,6 +27,8 @@ import kamon.metric._ import scala.collection.JavaConverters._ import scala.concurrent.duration._ +import kamon.util.NeedToScale + object Datadog extends ExtensionId[DatadogExtension] with ExtensionIdProvider { override def lookup(): ExtensionId[_ <: Extension] = Datadog override def createExtension(system: ExtendedActorSystem): DatadogExtension = new DatadogExtension(system) @@ -57,11 +59,18 @@ class DatadogExtension(system: ExtendedActorSystem) extends Kamon.Extension { assert(flushInterval >= tickInterval, "Datadog flush-interval needs to be equal or greater to the tick-interval") val metricsSender = system.actorOf(DatadogMetricsSender.props(datadogHost, maxPacketSizeInBytes), "datadog-metrics-sender") + + val decoratedSender = datadogConfig match { + case NeedToScale(scaleTimeTo, scaleMemoryTo) => + system.actorOf(MetricScaleDecorator.props(scaleTimeTo, scaleMemoryTo, metricsSender), "datadog-metric-scale-decorator") + case _ => metricsSender + } + if (flushInterval == tickInterval) { // No need to buffer the metrics, let's go straight to the metrics sender. - metricsSender + decoratedSender } else { - system.actorOf(TickMetricSnapshotBuffer.props(flushInterval, metricsSender), "datadog-metrics-buffer") + system.actorOf(TickMetricSnapshotBuffer.props(flushInterval, decoratedSender), "datadog-metrics-buffer") } } } |