Class/Object

kamon.trace

Span

Related Docs: object Span | package trace

Permalink

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.

Linear Supertypes
Operation, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Span
  2. Operation
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def doNotTrackMetrics(): Span

    Permalink

    Disables tracking of metrics for this Span.

  2. abstract def fail(errorMessage: String, cause: Throwable): Span

    Permalink

    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.

  3. abstract def fail(cause: Throwable): Span

    Permalink

    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.

  4. abstract def fail(errorMessage: String): Span

    Permalink

    Marks the operation represented by this Span as failed and adds the provided message as a Span tag using the "error.message" key.

  5. abstract def finish(at: Instant): Unit

    Permalink

    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.

  6. abstract def finish(): Unit

    Permalink

    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.

  7. abstract def finishAfter(duration: Duration): Unit

    Permalink

    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.

  8. abstract def id: Identifier

    Permalink

    Uniquely identifies this Span within the Trace.

  9. abstract def isEmpty: Boolean

    Permalink

    Returns true if this Span is a placeholder because no Span information is available.

  10. abstract def isRemote: Boolean

    Permalink

    Returns true if this Span was initially created in another process and then transferred to this process.

  11. abstract def kind: Kind

    Permalink

    Returns the kind of operation represented by this Span.

  12. abstract def link(span: Span, kind: Kind): Span

    Permalink

    Creates a link between this Span and the provided one.

  13. abstract def mark(key: String, at: Instant): Span

    Permalink

    Adds a new mark with the provided key and instant.

  14. abstract def mark(key: String): Span

    Permalink

    Adds a new mark with the provided key using the current instant from Kamon's clock.

  15. abstract def name(name: String): Span

    Permalink

    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.

  16. abstract def operationName(): String

    Permalink

    Returns the current operation name for this Span.

    Returns the current operation name for this Span.

    Definition Classes
    SpanOperation
  17. abstract def parentId: Identifier

    Permalink

    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.

  18. abstract def position: Position

    Permalink

    Returns the position of this Span in the trace to which it belongs.

  19. abstract def tag(tags: TagSet): Span

    Permalink

    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.

  20. abstract def tag(key: String, value: Boolean): Span

    Permalink

    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.

  21. abstract def tag(key: String, value: Long): Span

    Permalink

    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.

  22. abstract def tag(key: String, value: String): Span

    Permalink

    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.

  23. abstract def tagMetrics(tags: TagSet): Span

    Permalink

    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.

  24. abstract def tagMetrics(key: String, value: Boolean): Span

    Permalink

    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.

  25. abstract def tagMetrics(key: String, value: Long): Span

    Permalink

    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.

  26. abstract def tagMetrics(key: String, value: String): Span

    Permalink

    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.

  27. abstract def takeSamplingDecision(): Span

    Permalink

    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.

  28. abstract def trace: Trace

    Permalink

    Trace to which this Span belongs.

  29. abstract def trackMetrics(): Span

    Permalink

    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

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  16. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  18. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Operation

Inherited from AnyRef

Inherited from Any

Ungrouped