Current section

Files

Jump to
opentelemetry_experimental include otel_metrics.hrl
Raw

include/otel_metrics.hrl

-define(DEFAULT_METER_PROVIDER, otel_meter_provider_default).
-define(AGGREGATION_TEMPORALITY_DELTA, aggregation_temporality_delta).
-define(AGGREGATION_TEMPORALITY_CUMULATIVE, aggregation_temporality_cumulative).
-define(AGGREGATION_TEMPORALITY_UNSPECIFIED, aggregation_temporality_unspecified).
-record(meter,
{
module :: module() | '_',
instrumentation_scope :: opentelemetry:instrumentation_scope() | undefined,
provider :: atom() | '_',
instruments_tab :: ets:table() | '_',
view_aggregations_tab :: ets:table() | '_',
metrics_tab :: ets:table() | '_'
}).
-record(measurement,
{
instrument :: otel_instrument:t(),
value :: number(),
attributes :: opentelemetry:attributes_map()
}).
-record(drop_aggregation, {}).
-record(sum_aggregation,
{
%% TODO: attributes should be a tuple of just the values, sorted by attribute name
key :: {term(), opentelemetry:attributes_map(), reference()} | '$1' | {element, 2, '$_'},
start_time_unix_nano :: integer() | '_' | '$1' | {const, integer()},
checkpoint :: number() | undefined | '_' | '$2' | '$3',
int_value :: number() | undefined | '$3' | {'+', '$3', {const, number()}},
float_value :: number() | undefined | '$4' | {'+', '$4', {const, number()}}
}).
-record(last_value_aggregation,
{
%% TODO: attributes should be a tuple of just the values, sorted by attribute name
key :: {term(), opentelemetry:attributes_map(), reference()} | '$1',
checkpoint :: number() | undefined | '_' | '$2',
value :: number() | undefined | '$2'
}).
-record(explicit_histogram_checkpoint,
{
bucket_counts :: counters:counters_ref() | undefined | '$5',
min :: number() | '$6',
max :: number() | '$7',
sum :: number() | '$8'
}).
-record(explicit_histogram_aggregation,
{
%% TODO: attributes should be a tuple of just the values, sorted by attribute name
key :: {term(), opentelemetry:attributes_map(), reference()} | '$1',
start_time_unix_nano :: integer() | '$2',
%% instrument_temporality :: otel_aggregation:temporality(),
%% default: [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 1000.0]
boundaries :: [float()] | '$3',
record_min_max :: boolean() | '$4',
checkpoint :: #explicit_histogram_checkpoint{} | undefined | '_' | {#explicit_histogram_checkpoint{}},
bucket_counts :: counters:counters_ref() | undefined | '$5',
min :: number() | infinity | '$6',
max :: number() | '$7',
sum :: number() | '$8'
}).
-record(datapoint,
{
attributes :: opentelemetry:attributes_map(),
start_time_unix_nano :: integer() | undefined,
time_unix_nano :: integer(),
value :: number(),
exemplars :: list() | undefined,
flags :: integer() %% uint32
}).
-record(sum,
{
datapoints :: [#datapoint{}],
aggregation_temporality :: otel_aggregation:temporality(),
is_monotonic :: boolean()
}).
-record(gauge,
{
datapoints :: [#datapoint{}]
}).
-record(histogram_datapoint,
{
attributes :: opentelemetry:attributes_map(),
start_time_unix_nano :: integer() | undefined,
time_unix_nano :: integer(),
count :: number(),
sum :: float(),
bucket_counts :: tuple(),
explicit_bounds :: [float()],
exemplars :: list(),
flags :: integer(),
min :: integer() | undefined,
max :: integer() | undefined
}).
-record(histogram,
{
datapoints :: [#histogram_datapoint{}],
aggregation_temporality :: otel_aggregation:temporality()
}).
-record(metric,
{
name :: otel_view:name(),
scope :: opentelemetry:instrumentation_scope(),
description :: otel_instrument:description(),
unit :: otel_instrument:unit(),
data :: #sum{} | #gauge{} | #histogram{}
}).