Otel.Metrics.Exemplar.Reservoir.SimpleFixedSize (otel v0.4.1)

Copy Markdown View Source

A reservoir that uses uniformly-weighted random sampling.

Keeps at most size exemplars. Uses reservoir sampling algorithm: the Nth measurement has a size/N probability of being kept, replacing a random existing entry.

Summary

Types

primitive()

@type primitive() ::
  String.t() | {:bytes, binary()} | boolean() | integer() | float() | nil

primitive_any()

@type primitive_any() ::
  primitive() | [primitive_any()] | %{required(String.t()) => primitive_any()}

state()

@type state() :: %{
  size: pos_integer(),
  count: non_neg_integer(),
  exemplars: %{required(non_neg_integer()) => Otel.Metrics.Exemplar.t()}
}

Functions

collect(state)

@spec collect(state :: state()) :: {[Otel.Metrics.Exemplar.t()], state()}

new(opts \\ %{})

@spec new(opts :: map()) :: state()

offer(state, value, time, filtered_attributes, ctx)

@spec offer(
  state :: state(),
  value :: number(),
  time :: non_neg_integer(),
  filtered_attributes :: %{required(String.t()) => primitive_any()},
  ctx :: Otel.Ctx.t()
) :: state()