aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2015-05-09 11:26:07 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2015-05-09 11:26:07 +0200
commitf62f099989eb615d12291c546ade2f66fa7e63e2 (patch)
treebf6cba31e2b7d36a5257ad995f012a85e5699625
parent7b0ebc962355442d63930ebcc7f200a4ce61320a (diff)
downloadKamon-f62f099989eb615d12291c546ade2f66fa7e63e2.tar.gz
Kamon-f62f099989eb615d12291c546ade2f66fa7e63e2.tar.bz2
Kamon-f62f099989eb615d12291c546ade2f66fa7e63e2.zip
! datadog: change the metric naming convention for single instrument entities.
-rw-r--r--kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala26
-rw-r--r--kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala17
2 files changed, 35 insertions, 8 deletions
diff --git a/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala b/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala
index 4a73f5aa..3fc25f46 100644
--- a/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala
+++ b/kamon-datadog/src/main/scala/kamon/datadog/DatadogMetricsSender.scala
@@ -89,19 +89,29 @@ class DatadogMetricsSender(remote: InetSocketAddress, maxPacketSizeInBytes: Long
def encodeDatadogCounter(count: Long): String = count.toString + "|c"
+ def isSingleInstrumentEntity(entity: Entity): Boolean =
+ SingleInstrumentEntityRecorder.AllCategories.contains(entity.category)
+
def buildMetricName(entity: Entity, metricKey: MetricKey): String =
- if (SingleInstrumentEntityRecorder.AllCategories.contains(entity.category))
- s"$appName.${entity.category}"
+ if (isSingleInstrumentEntity(entity))
+ s"$appName.${entity.category}.${entity.name}"
else
s"$appName.${entity.category}.${metricKey.name}"
def buildIdentificationTag(entity: Entity, metricKey: MetricKey): String = {
- val normalizedEntityName = entity.name.replace(" ", "")
- if (entity.tags.nonEmpty) {
- val tagsString = entity.tags.map { case (k, v) ⇒ k + ":" + v } mkString ","
- s"|#${entity.category}:${normalizedEntityName},$tagsString"
- } else
- s"|#${entity.category}:${normalizedEntityName}"
+ def tagsString: String = entity.tags.map { case (k, v) ⇒ k + ":" + v } mkString ","
+
+ if (isSingleInstrumentEntity(entity)) {
+ if (entity.tags.nonEmpty) "|#" + tagsString else ""
+
+ } else {
+ val normalizedEntityName = entity.name.replace(" ", "")
+
+ if (entity.tags.nonEmpty) {
+ s"|#${entity.category}:${normalizedEntityName},$tagsString"
+ } else
+ s"|#${entity.category}:${normalizedEntityName}"
+ }
}
}
diff --git a/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala b/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
index 22ce1f8e..8818ca3e 100644
--- a/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
+++ b/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
@@ -112,6 +112,16 @@ class DatadogMetricSenderSpec extends BaseKamonSpec("datadog-metric-sender-spec"
data.utf8String should be(s"kamon.category.metric-two:10|ms|@0.5|#category:datadog,my-cool-tag:some-value")
}
+ "not include the entity-category:entity:name identification tag for single instrument entities" in new UdpListenerFixture {
+ val (entity, testRecorder) = buildSimpleCounter("example-counter", tags = Map("my-cool-tag" -> "some-value"))
+ testRecorder.instrument.increment(17)
+
+ val udp = setup(Map(entity -> testRecorder.collect(collectionContext)))
+ val Udp.Send(data, _, _) = udp.expectMsgType[Udp.Send]
+
+ data.utf8String should be(s"kamon.counter.example-counter:17|c|#my-cool-tag:some-value")
+ }
+
}
trait UdpListenerFixture {
@@ -124,6 +134,13 @@ class DatadogMetricSenderSpec extends BaseKamonSpec("datadog-metric-sender-spec"
(entity, recorder)
}
+ def buildSimpleCounter(name: String, tags: Map[String, String] = Map.empty): (Entity, CounterRecorder) = {
+ val entity = Entity(name, SingleInstrumentEntityRecorder.Counter, tags)
+ val counter = Kamon.metrics.counter(name, tags)
+ val recorder = CounterRecorder(CounterKey("counter", UnitOfMeasurement.Unknown), counter)
+ (entity, recorder)
+ }
+
def setup(metrics: Map[Entity, EntitySnapshot]): TestProbe = {
val udp = TestProbe()
val metricsSender = system.actorOf(Props(new DatadogMetricsSender(new InetSocketAddress(localhostName, 0), testMaxPacketSize) {