OpenTelemetry.Span (OpenTelemetry API v1.5.0)

View Source

This module contains macros for Span operations that update the active current Span in the current process. An example of creating an Event and adding it to the current Span:

require OpenTelemetry.Tracer, as: Tracer
require OpenTelemetry.Span, as: Span

span_ctx = Tracer.start_span("some-span")
...
Span.add_event(span_ctx, "ecto.query", query: query, total_time: total_time)
...
Span.end_span(span_ctx)

A Span represents a single operation within a trace. Spans can be nested to form a trace tree. Each trace contains a root span, which typically describes the end-to-end latency and, optionally, one or more sub-spans for its sub-operations.

Spans encapsulate:

See specification

Summary

Functions

Add an event to the currently active Span.

Add a list of events to the currently active Span.

End the Span. Sets the end timestamp for the currently active Span. This has no effect on any child Spans that may exist of this Span.

End the Span. Sets the end timestamp for the currently active Span using the passed in timestamp if valid, current timestamp otherwise. This has no effect on any child Spans that may exist of this Span.

Get the hex-encoded trace context.

Get the lowercase hex encoded span ID.

Get the lowercase hex encoded trace ID.

Returns whether this Span is recording information like events, attributes, status, etc.

Returns true if the SpanContext has a non-zero TraceId and SpanId.

Record an exception as an event, following the semantics convetions for exceptions.

Set an attribute with key and value on the currently active Span.

Add a list of attributes to the currently active Span.

Sets the Status of the currently active Span.

Get the SpanId of a Span.

Get the TraceId of a Span.

Get the Tracestate of a Span.

Updates the Span name.

Types

start_config()

@type start_config() :: :otel_span.start_config()

start_opts()

@type start_opts() :: :otel_span.start_opts()

Functions

add_event(span_ctx, event, attributes)

Add an event to the currently active Span.

See specification

add_events(span_ctx, events)

@spec add_events(OpenTelemetry.span_ctx(), [OpenTelemetry.event()]) :: boolean()

Add a list of events to the currently active Span.

See specification

end_span(span_ctx)

End the Span. Sets the end timestamp for the currently active Span. This has no effect on any child Spans that may exist of this Span.

The Span Context is returned with is_recording set to false.

See specification

end_span(span_ctx, timestamp)

End the Span. Sets the end timestamp for the currently active Span using the passed in timestamp if valid, current timestamp otherwise. This has no effect on any child Spans that may exist of this Span.

The Span Context is returned with is_recording set to false.

See specification

hex_span_ctx(span_ctx)

@spec hex_span_ctx(OpenTelemetry.span_ctx() | nil) ::
  %{
    otel_trace_id: OpenTelemetry.hex_trace_id(),
    otel_span_id: OpenTelemetry.hex_span_id(),
    otel_trace_flags: binary()
  }
  | %{}

Get the hex-encoded trace context.

hex_span_id(span)

Get the lowercase hex encoded span ID.

hex_trace_id(span)

Get the lowercase hex encoded trace ID.

is_recording(span_ctx)

Returns whether this Span is recording information like events, attributes, status, etc.

See specification

is_valid(span_ctx)

Returns true if the SpanContext has a non-zero TraceId and SpanId.

See specification

record_exception(span_ctx, exception, trace \\ nil, attributes \\ [])

Record an exception as an event, following the semantics convetions for exceptions.

If trace is not provided, the stacktrace is retrieved from Process.info/2

See specification

set_attribute(span_ctx, key, value)

Set an attribute with key and value on the currently active Span.

See specification

set_attributes(span_ctx, attributes)

Add a list of attributes to the currently active Span.

See specification

set_status(span_ctx, status)

Sets the Status of the currently active Span.

If used, this will override the default Span Status, which is :unset. Valid statuses are :ok, or :error. Calling this will also set the status_code attribute to 1(:ok), or 2(:error).

See specification

span_id(span)

Get the SpanId of a Span.

trace_id(span)

Get the TraceId of a Span.

tracestate(span)

Get the Tracestate of a Span.

update_name(span_ctx, name)

Updates the Span name.

It is highly discouraged to update the name of a Span after its creation. Span name is often used to group, filter and identify the logical groups of spans. And often, filtering logic will be implemented before the Span creation for performance reasons. Thus the name update may interfere with this logic.

The function name is called update_name to differentiate this function from the regular property setter. It emphasizes that this operation signifies a major change for a Span and may lead to re-calculation of sampling or filtering decisions made previously depending on the implementation.

See specification