aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/Tracer.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-08-15 14:35:17 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-08-15 14:35:17 +0200
commitdb0f66e0f0508a6565738bb19520710eddd0398c (patch)
treef92d57a29e457c66e1f0a617c9daf16c01e2c438 /kamon-core/src/main/scala/kamon/trace/Tracer.scala
parent7361fde5f06692a0e1b83d53756bb536627f2d02 (diff)
downloadKamon-db0f66e0f0508a6565738bb19520710eddd0398c.tar.gz
Kamon-db0f66e0f0508a6565738bb19520710eddd0398c.tar.bz2
Kamon-db0f66e0f0508a6565738bb19520710eddd0398c.zip
add optional span scoping to the span metrics
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/Tracer.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala14
1 files changed, 9 insertions, 5 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
index 7d8830ca..37706926 100644
--- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala
@@ -39,7 +39,8 @@ object Tracer {
private[Tracer] val tracerMetrics = new TracerMetrics(metrics)
@volatile private[Tracer] var joinRemoteParentsWithSameSpanID: Boolean = true
- @volatile private[Tracer] var configuredSampler: Sampler = Sampler.Never
+ @volatile private[Tracer] var scopeSpanMetrics: Boolean = true
+ @volatile private[Tracer] var _sampler: Sampler = Sampler.Never
@volatile private[Tracer] var _identityProvider: IdentityProvider = IdentityProvider.Default()
reconfigure(initialConfig)
@@ -51,7 +52,7 @@ object Tracer {
this._identityProvider
def sampler: Sampler =
- configuredSampler
+ _sampler
private[kamon] def reconfigure(config: Config): Unit = synchronized {
Try {
@@ -66,13 +67,14 @@ object Tracer {
}
val newJoinRemoteParentsWithSameSpanID = traceConfig.getBoolean("join-remote-parents-with-same-span-id")
-
+ val newScopeSpanMetrics = traceConfig.getBoolean("span-metrics.scope-spans-to-parent")
val newIdentityProvider = dynamic.createInstanceFor[IdentityProvider](
traceConfig.getString("identity-provider"), immutable.Seq.empty[(Class[_], AnyRef)]
).get
- configuredSampler = newSampler
+ _sampler = newSampler
joinRemoteParentsWithSameSpanID = newJoinRemoteParentsWithSameSpanID
+ scopeSpanMetrics = newScopeSpanMetrics
_identityProvider = newIdentityProvider
}.failed.foreach {
@@ -136,6 +138,8 @@ object Tracer {
.orElse(if(useActiveSpanAsParent) Some(Kamon.currentContext().get(Span.ContextKey)) else None)
.filter(span => span != Span.Empty)
+ val nonRemoteParent = parentSpan.filter(s => s.isLocal() && s.nonEmpty())
+
val samplingDecision: SamplingDecision = parentSpan
.map(_.context.samplingDecision)
.filter(_ != SamplingDecision.Unknown)
@@ -147,7 +151,7 @@ object Tracer {
}
tracer.tracerMetrics.createdSpans.increment()
- Span.Local(spanContext, operationName, initialSpanTags, initialMetricTags, startTimestampMicros, reporterRegistry)
+ Span.Local(spanContext, nonRemoteParent, operationName, initialSpanTags, initialMetricTags, startTimestampMicros, reporterRegistry, tracer.scopeSpanMetrics)
}
private def joinParentContext(parent: Span, samplingDecision: SamplingDecision): SpanContext =