instrument_span_processor_simple (instrument v1.0.0)

View Source

Simple span processor that exports spans immediately.

This processor exports each span as soon as it ends, without batching. Suitable for development and debugging, but not recommended for production due to performance overhead.

Configuration

- exporter: Exporter module (required) - exporter_config: Configuration for the exporter (default: #{})

Example

  instrument_span_processor:register(instrument_span_processor_simple, #{
    exporter => instrument_exporter_console,
    exporter_config => #{format => text}
  }).

Summary

Functions

Forces a flush. No-op for simple processor since it exports immediately.

Forces a flush with state.

Initializes the simple processor.

Called when a span ends. Exports the span immediately.

Called when a span starts. Returns the span unchanged.

Shuts down the processor.

Shuts down the processor with state. Ignores the passed state and uses current state from persistent_term, as the exporter state may have been updated during span exports.

Functions

force_flush()

-spec force_flush() -> ok.

Forces a flush. No-op for simple processor since it exports immediately.

force_flush(State)

-spec force_flush(#state{exporter :: module(), exporter_state :: term()}) -> ok.

Forces a flush with state.

init(Config)

-spec init(map()) -> {ok, #state{exporter :: module(), exporter_state :: term()}} | {error, term()}.

Initializes the simple processor.

on_end(Span)

-spec on_end(#span{name :: binary(),
                   ctx ::
                       #span_ctx{trace_id :: <<_:128>> | undefined,
                                 span_id :: <<_:64>> | undefined,
                                 trace_flags :: 0 | 1,
                                 trace_state :: [{binary(), binary()}],
                                 is_remote :: boolean()},
                   parent_ctx ::
                       #span_ctx{trace_id :: <<_:128>> | undefined,
                                 span_id :: <<_:64>> | undefined,
                                 trace_flags :: 0 | 1,
                                 trace_state :: [{binary(), binary()}],
                                 is_remote :: boolean()} |
                       undefined,
                   tracer ::
                       #tracer{name :: binary(),
                               version :: binary() | undefined,
                               schema_url :: binary() | undefined,
                               resource ::
                                   #resource{attributes :: map(), schema_url :: binary() | undefined} |
                                   undefined} |
                       undefined,
                   kind :: client | server | producer | consumer | internal,
                   start_time :: integer(),
                   end_time :: integer() | undefined,
                   attributes :: map(),
                   events ::
                       [#span_event{name :: binary(),
                                    timestamp :: integer(),
                                    attributes :: map(),
                                    dropped_attributes_count :: non_neg_integer()}],
                   links ::
                       [#span_link{ctx ::
                                       #span_ctx{trace_id :: <<_:128>> | undefined,
                                                 span_id :: <<_:64>> | undefined,
                                                 trace_flags :: 0 | 1,
                                                 trace_state :: [{binary(), binary()}],
                                                 is_remote :: boolean()},
                                   attributes :: map(),
                                   dropped_attributes_count :: non_neg_integer()}],
                   status :: unset | ok | {error, binary()},
                   is_recording :: boolean(),
                   dropped_attributes_count :: non_neg_integer(),
                   dropped_events_count :: non_neg_integer(),
                   dropped_links_count :: non_neg_integer()}) ->
                ok.

Called when a span ends. Exports the span immediately.

on_start(Span, ParentCtx)

-spec on_start(#span{name :: binary(),
                     ctx ::
                         #span_ctx{trace_id :: <<_:128>> | undefined,
                                   span_id :: <<_:64>> | undefined,
                                   trace_flags :: 0 | 1,
                                   trace_state :: [{binary(), binary()}],
                                   is_remote :: boolean()},
                     parent_ctx ::
                         #span_ctx{trace_id :: <<_:128>> | undefined,
                                   span_id :: <<_:64>> | undefined,
                                   trace_flags :: 0 | 1,
                                   trace_state :: [{binary(), binary()}],
                                   is_remote :: boolean()} |
                         undefined,
                     tracer ::
                         #tracer{name :: binary(),
                                 version :: binary() | undefined,
                                 schema_url :: binary() | undefined,
                                 resource ::
                                     #resource{attributes :: map(), schema_url :: binary() | undefined} |
                                     undefined} |
                         undefined,
                     kind :: client | server | producer | consumer | internal,
                     start_time :: integer(),
                     end_time :: integer() | undefined,
                     attributes :: map(),
                     events ::
                         [#span_event{name :: binary(),
                                      timestamp :: integer(),
                                      attributes :: map(),
                                      dropped_attributes_count :: non_neg_integer()}],
                     links ::
                         [#span_link{ctx ::
                                         #span_ctx{trace_id :: <<_:128>> | undefined,
                                                   span_id :: <<_:64>> | undefined,
                                                   trace_flags :: 0 | 1,
                                                   trace_state :: [{binary(), binary()}],
                                                   is_remote :: boolean()},
                                     attributes :: map(),
                                     dropped_attributes_count :: non_neg_integer()}],
                     status :: unset | ok | {error, binary()},
                     is_recording :: boolean(),
                     dropped_attributes_count :: non_neg_integer(),
                     dropped_events_count :: non_neg_integer(),
                     dropped_links_count :: non_neg_integer()},
               #span_ctx{trace_id :: <<_:128>> | undefined,
                         span_id :: <<_:64>> | undefined,
                         trace_flags :: 0 | 1,
                         trace_state :: [{binary(), binary()}],
                         is_remote :: boolean()} |
               undefined) ->
                  #span{name :: binary(),
                        ctx ::
                            #span_ctx{trace_id :: <<_:128>> | undefined,
                                      span_id :: <<_:64>> | undefined,
                                      trace_flags :: 0 | 1,
                                      trace_state :: [{binary(), binary()}],
                                      is_remote :: boolean()},
                        parent_ctx ::
                            #span_ctx{trace_id :: <<_:128>> | undefined,
                                      span_id :: <<_:64>> | undefined,
                                      trace_flags :: 0 | 1,
                                      trace_state :: [{binary(), binary()}],
                                      is_remote :: boolean()} |
                            undefined,
                        tracer ::
                            #tracer{name :: binary(),
                                    version :: binary() | undefined,
                                    schema_url :: binary() | undefined,
                                    resource ::
                                        #resource{attributes :: map(),
                                                  schema_url :: binary() | undefined} |
                                        undefined} |
                            undefined,
                        kind :: client | server | producer | consumer | internal,
                        start_time :: integer(),
                        end_time :: integer() | undefined,
                        attributes :: map(),
                        events ::
                            [#span_event{name :: binary(),
                                         timestamp :: integer(),
                                         attributes :: map(),
                                         dropped_attributes_count :: non_neg_integer()}],
                        links ::
                            [#span_link{ctx ::
                                            #span_ctx{trace_id :: <<_:128>> | undefined,
                                                      span_id :: <<_:64>> | undefined,
                                                      trace_flags :: 0 | 1,
                                                      trace_state :: [{binary(), binary()}],
                                                      is_remote :: boolean()},
                                        attributes :: map(),
                                        dropped_attributes_count :: non_neg_integer()}],
                        status :: unset | ok | {error, binary()},
                        is_recording :: boolean(),
                        dropped_attributes_count :: non_neg_integer(),
                        dropped_events_count :: non_neg_integer(),
                        dropped_links_count :: non_neg_integer()}.

Called when a span starts. Returns the span unchanged.

shutdown()

-spec shutdown() -> ok.

Shuts down the processor.

shutdown(State)

-spec shutdown(#state{exporter :: module(), exporter_state :: term()}) -> ok.

Shuts down the processor with state. Ignores the passed state and uses current state from persistent_term, as the exporter state may have been updated during span exports.