O11y.Span (O11y v0.2.10)

Struct version of the erlang record definition for span, along with its dependent entities.

The record is defined here: https://github.com/open-telemetry/opentelemetry-erlang/blob/main/apps/opentelemetry/include/otel_span.hrl#L19

Summary

Functions

Builds a Span struct with all its properties filled out from the given record.

Guard definition for the from_record function.

Types

span_kind()

@type span_kind() :: :internal | :server | :client | :producer | :consumer

span_record()

@type span_record() ::
  {:span, trace_id :: integer() | :undefined, span_id :: integer() | :undefined,
   tracestate :: [tuple()], parent_span_id :: integer() | :undefined,
   name :: String.t() | atom(), kind :: span_kind() | :undefined,
   start_time :: integer() | :undefined, end_time :: integer() | :undefined,
   attributes :: O11y.Attributes.attributes_record(),
   events :: O11y.Events.events_record(), links :: O11y.Links.links_record(),
   status :: O11y.Status.status_record(), trace_flags :: integer() | :undefined,
   is_recording :: boolean() | :undefined,
   instrumentation_scope :: term() | :undefined}

t()

@type t() :: %O11y.Span{
  attributes: O11y.Attributes.t() | :undefined,
  duration_ms: integer() | :undefined,
  end_time: integer() | :undefined,
  events: [O11y.Event.t()],
  instrumentation_scope: term() | :undefined,
  is_recording: boolean() | :undefined,
  kind: atom(),
  links: [O11y.Link.t()],
  name: String.t() | atom(),
  parent_span_id: integer() | :undefined,
  span_id: integer() | :undefined,
  start_time: integer() | :undefined,
  status: O11y.Status.t() | :undefined,
  trace_flags: integer() | :undefined,
  trace_id: integer() | :undefined,
  tracestate: [tuple()]
}

Functions

from_record(span_record)

@spec from_record(span_record()) :: t()

Builds a Span struct with all its properties filled out from the given record.

Examples:

iex> span_record =
iex> {
...>   :span,
...>   36028033703494123531935328165008164641,
...>   3003871636294788166,
...>   [],
...>   9251127051694223323,
...>   "span3",
...>   :internal,
...>   -576460751554471834,
...>   -576460751554453625,
...>   {:attributes, 128, :infinity, 0, %{attr2: "value2"}},
...>   {:events, 128, 128, :infinity, 0,
...>     [
...>       {:event, -576460751554458125, "event1",
...>       {:attributes, 128, :infinity, 0, %{attr3: "value3"}}}
...>     ]},
...>   {:links, 128, 128, :infinity, 0,
...>     [
...>       {:link, 15885629928321603655903684450721700386,
...>       4778191783967788040,
...>       {:attributes, 128, :infinity, 0, %{link_attr1: "link_value1"}}, []}
...>     ]},
...>   {:status, :error, "whoops!"},
...>   1,
...>   true,
...>   :undefined
...> }
iex> Span.from_record(span_record)
iex> %O11y.Span{
...>   trace_id: 36028033703494123531935328165008164641,
...>   span_id: 3003871636294788166,
...>   tracestate: [],
...>   parent_span_id: 9251127051694223323,
...>   name: "span3",
...>   kind: :internal,
...>   start_time: -576460751554471834,
...>   end_time: -576460751554453625,
...>   duration_ms: 0,
...>   attributes: %{attr2: "value2"},
...>   events: [
...>     %O11y.Event{
...>       name: "event1",
...>       native_time: -576460751554458125,
...>       attributes: %{attr3: "value3"}
...>     }
...>   ],
...>   links: [
...>     %O11y.Link{
...>       trace_id: 15885629928321603655903684450721700386,
...>       span_id: 4778191783967788040,
...>       attributes: %{link_attr1: "link_value1"},
...>       tracestate: []
...>     }
...>   ],
...>   status: %O11y.Status{code: :error, message: "whoops!"},
...>   trace_flags: 1,
...>   is_recording: true,
...>   instrumentation_scope: :undefined
...> }

is_span_record(value)

(macro)

Guard definition for the from_record function.