sealed abstract class Span extends Operation
A Span encapsulates information about an operation performed by the application and its relationship to other operations. At the most basic level, all Spans have an operation name and they are bound to the time taken by the application to perform that operation, meaning that they have start and end time time stamps.
Spans connect to each other creating a hierarchical structure of operations, where an operation can have several child operations but only one parent operation. Furthermore, all related Spans share the same Trace information.
Spans can be enriched with two types of information: tags and marks. Tags are key/value pairs that give additional information about the operation; for example, a Span that represents an HTTP request could have tags that indicate the full request URL, the response status code and the size of the payload, information that might come handy when analyzing and troubleshooting issues using the trace data. Marks represent events related to the operation and they are bound to a specific instant in time; for example, a mark could be used to indicate the instant when a connection was established, when the SSL handshake finished and when the payload was transferred for a single HTTP request operation.
Optionally, Spans can generate metrics about the processing time of the operations they represent. By default, all Spans will generate metrics unless they are explicitly disabled. Since metrics are very susceptible to high cardinality tags, the Spans handle two different sets of tags: the Span tags that can have any sort of information (like URLs, user ids and so on) and the metric tags which should only include information with low cardinality (like HTTP status codes or operation names).
Once a Span is finished it will be flushed to the Span reporters and, if metrics stayed enabled, the processing time of the Span will be recorded on the "span.processing-time" metric with all provided metric tags in addition to the operationName and error tags which are always added.
- Alphabetic
- By Inheritance
- Span
- Operation
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def doNotTrackMetrics(): Span
Disables tracking of metrics for this Span.
- abstract def fail(errorMessage: String, cause: Throwable): Span
Marks the operation represented by this Span as failed and adds the provided message as a Span tag using the "error.message" key and optionally adds the "error.stacktrace" Span tag with the stack trace from the provided throwable.
Marks the operation represented by this Span as failed and adds the provided message as a Span tag using the "error.message" key and optionally adds the "error.stacktrace" Span tag with the stack trace from the provided throwable. See the "kamon.trace.include-error-stacktrace" setting for more information.
- abstract def fail(cause: Throwable): Span
Marks the operation represented by this Span as failed and optionally adds the "error.stacktrace" Span tag with the stack trace from the provided throwable.
Marks the operation represented by this Span as failed and optionally adds the "error.stacktrace" Span tag with the stack trace from the provided throwable. See the "kamon.trace.include-error-stacktrace" setting for more information.
- abstract def fail(errorMessage: String): Span
Marks the operation represented by this Span as failed and adds the provided message as a Span tag using the "error.message" key.
- abstract def finish(at: Instant): Unit
Finishes this Span using the provided finish instant.
Finishes this Span using the provided finish instant. Even though it is possible to call any of the methods that modify/write information on the Span, once it is finished no further changes are taken into account.
- abstract def finish(): Unit
Finishes this Span.
Finishes this Span. Even though it is possible to call any of the methods that modify/write information on the Span, once it is finished no further changes are taken into account.
- abstract def finishAfter(duration: Duration): Unit
Finishes this Span using the provided duration.
Finishes this Span using the provided duration. Even though it is possible to call any of the methods that modify/write information on the Span, once it is finished no further changes are taken into account.
- abstract def id: Identifier
Uniquely identifies this Span within the Trace.
- abstract def isEmpty: Boolean
Returns true if this Span is a placeholder because no Span information is available.
- abstract def isRemote: Boolean
Returns true if this Span was initially created in another process and then transferred to this process.
- abstract def kind: Kind
Returns the kind of operation represented by this Span.
- abstract def link(span: Span, kind: Kind): Span
Creates a link between this Span and the provided one.
- abstract def mark(key: String, at: Instant): Span
Adds a new mark with the provided key and instant.
- abstract def mark(key: String): Span
Adds a new mark with the provided key using the current instant from Kamon's clock.
- abstract def name(name: String): Span
Changes the operation name on this Span.
Changes the operation name on this Span. Even though it is possible (and sometimes necessary) to change the operation name in a Span, take into account that the operation name might be captured by child Spans when parent operation scoping is enabled and any updates done after the child spans read the operation name will not be reflected on the "parentOperation" tag.
- abstract def operationName(): String
Returns the current operation name for this Span.
- abstract def parentId: Identifier
Identifier for the parent of this this Span, if any.
Identifier for the parent of this this Span, if any. If a Span has no parent (e.g. it is the first Span in the trace) then an empty identifier is returned.
- abstract def position: Position
Returns the position of this Span in the trace to which it belongs.
- abstract def tag(tags: TagSet): Span
Adds all key/value pairs in the provided tags to the Span tags.
Adds all key/value pairs in the provided tags to the Span tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tag(key: String, value: Boolean): Span
Adds the provided key/value pair to the Span tags.
Adds the provided key/value pair to the Span tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tag(key: String, value: Long): Span
Adds the provided key/value pair to the Span tags.
Adds the provided key/value pair to the Span tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tag(key: String, value: String): Span
Adds the provided key/value pair to the Span tags.
Adds the provided key/value pair to the Span tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tagMetrics(tags: TagSet): Span
Adds all key/value pairs in the provided tags to the Span metric tags.
Adds all key/value pairs in the provided tags to the Span metric tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tagMetrics(key: String, value: Boolean): Span
Adds the provided key/value pair to the Span metric tags.
Adds the provided key/value pair to the Span metric tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tagMetrics(key: String, value: Long): Span
Adds the provided key/value pair to the Span metric tags.
Adds the provided key/value pair to the Span metric tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def tagMetrics(key: String, value: String): Span
Adds the provided key/value pair to the Span metric tags.
Adds the provided key/value pair to the Span metric tags. If a tag with the provided key was already present then its value will be overwritten.
- abstract def takeSamplingDecision(): Span
Makes the Span decide for a Sample or DoNotSample decision for the Trace it belongs to, in case the current that the current Sampling Decision is Unknown.
Makes the Span decide for a Sample or DoNotSample decision for the Trace it belongs to, in case the current that the current Sampling Decision is Unknown. If the Sampling Decision is already taken, calling this method will have no effect on the Span.
- abstract def trace: Trace
Trace to which this Span belongs.
- abstract def trackMetrics(): Span
Enables tracking of metrics for this Span.
Enables tracking of metrics for this Span. For a plain Span, this means that the span.processing-time metric will be tracked and for a Delayed Span, the span.elapsed-time and span.wait-time metrics will be tracked as well.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()