Current section

Files

Jump to
opentelemetry_api lib open_telemetry meter.ex
Raw

lib/open_telemetry/meter.ex

defmodule OpenTelemetry.Meter do
@moduledoc """
require OpenTelemetry.Meter
OpenTelemetry.register_application_meter(Your.Application)
OpenTelemetry.Meter.new_instruments([...])
bound = OpenTelemetry.Meter.bind("some.latency", [])
# measure time spent on some function and then record it
OpenTelemetry.Meter.record(bound, time)
"""
defmacro new_instruments(list) do
quote do
:ot_meter.new_instruments(:opentelemetry.get_meter(__MODULE__), unquote(list))
end
end
defmacro bind(name, label_set) do
quote do
:ot_meter.bind(:opentelemetry.get_meter(__MODULE__), unquote(name), unquote(label_set))
end
end
defmacro release(bound_instrument) do
quote do
:ot_meter.release(:opentelemetry.get_meter(__MODULE__), unquote(bound_instrument))
end
end
defmacro record(name, number, label_set) do
quote do
:ot_meter.record(
:opentelemetry.get_meter(__MODULE__),
unquote(name),
unquote(number),
unquote(label_set)
)
end
end
defmacro record(bound_instrument, number) do
quote do
:ot_meter.record(
:opentelemetry.get_meter(__MODULE__),
unquote(bound_instrument),
unquote(number)
)
end
end
defmacro record_batch(label_set, measurements) do
quote do
:ot_meter.record_batch(
:opentelemetry.get_meter(__MODULE__),
unquote(label_set),
unquote(measurements)
)
end
end
end