ocaml-opentelemetry/src/lib/metrics_emitter.ml
2026-01-20 00:15:30 -05:00

31 lines
912 B
OCaml

(** Metrics.
The metrics emitter is used to, well, emit metrics. *)
open Opentelemetry_emitter
type t = {
emit: Metrics.t Emitter.t;
clock: Clock.t;
}
let dummy : t = { emit = Emitter.dummy; clock = Clock.ptime_clock }
let[@inline] enabled (self : t) = Emitter.enabled self.emit
let of_exporter (exp : Exporter.t) : t =
{ emit = exp.emit_metrics; clock = exp.clock }
let dynamic_main : t =
Main_exporter.dynamic_forward_to_main_exporter |> of_exporter
(** Emit some metrics to the collector (sync). This blocks until the backend has
pushed the metrics into some internal queue, or discarded them. *)
let (emit [@deprecated "use an explicit Metrics_emitter.t"]) =
fun ?attrs:_ (l : Metrics.t list) : unit ->
match Main_exporter.get () with
| None -> ()
| Some exp -> Exporter.send_metrics exp l
let[@inline] emit1 (self : t) (m : Metrics.t) : unit =
Emitter.emit self.emit [ m ]