Current section
Files
Jump to
Current section
Files
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