ocaml-opentelemetry/src/lib/opentelemetry.ml
2026-03-03 17:10:19 -05:00

176 lines
3.9 KiB
OCaml

(** Main Opentelemetry API for libraries and user code. *)
module Core = Opentelemetry_core
(** Core types and definitions *)
module Interval_limiter = Interval_limiter
(** Utility to limit the frequency of some event
@since NEXT_RELEASE *)
(** {2 Wire format} *)
module Proto = Opentelemetry_proto
(** Protobuf types.
This is mostly useful internally. Users should not need to touch it. *)
(** {2 Time} *)
module Clock = Clock
module Timestamp_ns = Timestamp_ns
(** {2 Export signals to some external collector.} *)
module Emitter = Opentelemetry_emitter.Emitter
module Exporter = struct
include Exporter
(** Get a tracer from this exporter.
@since NEXT_RELEASE *)
let get_tracer (self : t) : Tracer.t = Tracer.of_exporter self
(** Get a meter from this exporter.
@since NEXT_RELEASE *)
let get_meter (self : t) : Meter.t = Meter.of_exporter self
(** Get a logger from this exporter.
@since NEXT_RELEASE *)
let get_logger (self : t) : Logger.t = Logger.of_exporter self
end
module Sdk = struct
include Sdk
(** Get a tracer forwarding to the current main exporter.
@since NEXT_RELEASE *)
let get_tracer ?name ?version ?attrs ?__MODULE__ () =
Trace_provider.get_tracer ?name ?version ?attrs ?__MODULE__ ()
(** Get a meter forwarding to the current main exporter.
@since NEXT_RELEASE *)
let get_meter ?name ?version ?attrs ?__MODULE__ () =
Meter_provider.get_meter ?name ?version ?attrs ?__MODULE__ ()
(** Get a logger forwarding to the current main exporter.
@since NEXT_RELEASE *)
let get_logger ?name ?version ?attrs ?__MODULE__ () =
Log_provider.get_logger ?name ?version ?attrs ?__MODULE__ ()
let self_debug_to_stderr = Sdk.self_debug_to_stderr
end
module Main_exporter = Sdk [@@deprecated "use Sdk instead"]
module Collector = struct
include Exporter
include Sdk
end
[@@deprecated "Use 'Exporter' instead"]
module Provider_config = Provider_config
module Self_debug = Self_debug
module Dynamic_enricher = Dynamic_enricher
module Trace_provider = Trace_provider
module Meter_provider = Meter_provider
module Log_provider = Log_provider
(** {2 Identifiers} *)
module Trace_id = Trace_id
let k_trace_id = Trace_id.k_trace_id
module Span_id = Span_id
module Span_ctx = Span_ctx
let k_ambient = Span_ctx.k_ambient
(** {2 Attributes and conventions} *)
module Conventions = Conventions
module Value = Value
module Key_value = Key_value
type value = Value.t
(** A value in a key/value attribute *)
type key_value = Key_value.t
(** {2 Global settings} *)
module Globals = Globals
(** {2 Traces and Spans} *)
module Event = Event
module Span_link = Span_link
module Span_status = Span_status
module Span_kind = Span_kind
(** {2 Traces} *)
module Span = Span
module Ambient_span = Ambient_span
module Tracer = struct
include Tracer
let default = Trace_provider.default_tracer
let with_thunk_and_finally = Trace_provider.with_thunk_and_finally
let with_ = Trace_provider.with_
end
module Trace = Tracer [@@deprecated "use Tracer instead"]
(** {2 Metrics} *)
module Metrics = Metrics
module Instrument = Instrument
module Meter = struct
include Meter
let default = Meter_provider.default_meter
let add_to_exporter = Meter_provider.add_to_exporter
let add_to_main_exporter = Meter_provider.add_to_main_exporter
end
(** {2 Logs} *)
module Log_record = Log_record
module Logger = struct
include Logger
let default = Log_provider.default_logger
let log = Log_provider.log
let logf = Log_provider.logf
end
module Logs = Logger [@@deprecated "use Logger"]
(** {2 Utils} *)
module Any_signal = Any_signal
module Any_signal_l = Any_signal_l
module Trace_context = Trace_context
module Gc_metrics = Gc_metrics
module Aswitch = Aswitch
(** @since NEXT_RELEASE *)
module Alist = Alist
(** Atomic list, for internal usage
@since 0.7 *)
(* *)
module GC_metrics = Gc_metrics
[@@deprecated "use Gc_metrics (beware capitalization)"]