mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-10 12:45:45 -04:00
31 lines
912 B
OCaml
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 ]
|