mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-09 12:23:32 -04:00
- Meter is new, and makes more sense than Metrics_callbacks/Metrics_emitter - Instrument in core, with some basic counters, gauges, and histograms, + the possibility to do one's own
28 lines
725 B
OCaml
28 lines
725 B
OCaml
open Common_
|
|
|
|
let enabled = Atomic.make false
|
|
|
|
let tracer = Atomic.make OTEL.Tracer.default
|
|
|
|
let[@inline] add_event (scope : OTEL.Span.t) ev = OTEL.Span.add_event scope ev
|
|
|
|
let set_tracer tr = Atomic.set tracer tr
|
|
|
|
let dummy_trace_id_ = OTEL.Trace_id.dummy
|
|
|
|
let dummy_span_id = OTEL.Span_id.dummy
|
|
|
|
let with_ ?kind ?attrs name f =
|
|
if Atomic.get enabled then (
|
|
let tracer = Atomic.get tracer in
|
|
OTEL.Tracer.with_ ~tracer ?kind ?attrs name f
|
|
) else (
|
|
(* A new scope is needed here because it might be modified *)
|
|
let span : OTEL.Span.t =
|
|
OTEL.Span.make ~trace_id:dummy_trace_id_ ~id:dummy_span_id ~start_time:0L
|
|
~end_time:0L name
|
|
in
|
|
f span
|
|
)
|
|
|
|
let set_enabled b = Atomic.set enabled b
|