aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-12-12 00:40:15 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2017-12-12 00:40:15 +0100
commit66cf166772712267aac922c51ded90c7dec3bdd5 (patch)
tree2a4c134a2ea879348ccfc1fa6b982f9cbd822952
parent1860d08fdc3fde314e18c74f745c2861178388a7 (diff)
downloadKamon-66cf166772712267aac922c51ded90c7dec3bdd5.tar.gz
Kamon-66cf166772712267aac922c51ded90c7dec3bdd5.tar.bz2
Kamon-66cf166772712267aac922c51ded90c7dec3bdd5.zip
allow disabling/enabling metrics collection from the SpanBuilder
-rw-r--r--kamon-core-tests/src/test/scala/kamon/trace/LocalSpanSpec.scala2
-rw-r--r--kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala7
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Span.scala8
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala14
4 files changed, 25 insertions, 6 deletions
diff --git a/kamon-core-tests/src/test/scala/kamon/trace/LocalSpanSpec.scala b/kamon-core-tests/src/test/scala/kamon/trace/LocalSpanSpec.scala
index 5d636d16..21ad93b3 100644
--- a/kamon-core-tests/src/test/scala/kamon/trace/LocalSpanSpec.scala
+++ b/kamon-core-tests/src/test/scala/kamon/trace/LocalSpanSpec.scala
@@ -32,6 +32,8 @@ class LocalSpanSpec extends WordSpec with Matchers with BeforeAndAfterAll with E
Kamon.buildSpan("test-span")
.withTag("test", "value")
.withStartTimestamp(100)
+ .disableMetrics()
+ .enableMetrics()
.start()
.finish(200)
diff --git a/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala b/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala
index ea29d92e..2a04024c 100644
--- a/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala
+++ b/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala
@@ -42,13 +42,18 @@ class SpanMetrics extends WordSpecLike with Matchers with MetricInspection with
}
- "not be recorded when disableMetrics() is called on the Span" in {
+ "not be recorded when disableMetrics() is called on the SpanBuilder or the Span" in {
val operation = "span-with-disabled-metrics"
buildSpan(operation)
.start()
.disableMetrics()
.finish()
+ buildSpan(operation)
+ .disableMetrics()
+ .start()
+ .finish()
+
Span.Metrics.ProcessingTime.valuesForTag("operation") shouldNot contain(operation)
}
diff --git a/kamon-core/src/main/scala/kamon/trace/Span.scala b/kamon-core/src/main/scala/kamon/trace/Span.scala
index 7410523b..d8d11589 100644
--- a/kamon-core/src/main/scala/kamon/trace/Span.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Span.scala
@@ -93,9 +93,9 @@ object Span {
* @param spanSink
*/
final class Local(spanContext: SpanContext, parent: Option[Span], initialOperationName: String, initialSpanTags: Map[String, Span.TagValue],
- initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink, scopeSpanMetrics: Boolean) extends Span {
+ initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink, trackMetrics: Boolean, scopeSpanMetrics: Boolean) extends Span {
- private var collectMetrics: Boolean = true
+ private var collectMetrics: Boolean = trackMetrics
private var open: Boolean = true
private val sampled: Boolean = spanContext.samplingDecision == SamplingDecision.Sample
private var hasError: Boolean = false
@@ -222,8 +222,8 @@ object Span {
object Local {
def apply(spanContext: SpanContext, parent: Option[Span], initialOperationName: String, initialSpanTags: Map[String, Span.TagValue],
initialMetricTags: Map[String, String], startTimestampMicros: Long, spanSink: SpanSink,
- scopeSpanMetrics: Boolean): Local =
- new Local(spanContext, parent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, scopeSpanMetrics)
+ trackMetrics: Boolean, scopeSpanMetrics: Boolean): Local =
+ new Local(spanContext, parent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, trackMetrics, scopeSpanMetrics)
}
diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
index 03c44a2c..addeddf6 100644
--- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
@@ -96,6 +96,7 @@ object Tracer {
private var initialSpanTags = Map.empty[String, Span.TagValue]
private var initialMetricTags = Map.empty[String, String]
private var useParentFromContext = true
+ private var trackMetrics = true
def asChildOf(parent: Span): SpanBuilder = {
if(parent != Span.Empty) this.parentSpan = parent
@@ -145,6 +146,17 @@ object Tracer {
this
}
+ def enableMetrics(): SpanBuilder = {
+ this.trackMetrics = true
+ this
+ }
+
+ def disableMetrics(): SpanBuilder = {
+ this.trackMetrics = false
+ this
+ }
+
+
def start(): Span = {
val startTimestampMicros = if(startTimestamp != 0L) startTimestamp else Clock.microTimestamp()
@@ -165,7 +177,7 @@ object Tracer {
}
tracer.tracerMetrics.createdSpans.increment()
- Span.Local(spanContext, nonRemoteParent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, tracer.scopeSpanMetrics)
+ Span.Local(spanContext, nonRemoteParent, initialOperationName, initialSpanTags, initialMetricTags, startTimestampMicros, spanSink, trackMetrics, tracer.scopeSpanMetrics)
}
private def joinParentContext(parent: Span, samplingDecision: SamplingDecision): SpanContext =