Module Opentelemetry_core.Instrument

Global registry of metric instruments.

Instruments are stateful accumulators (counters, gauges, histograms, …). update is called at any time to record a value; emit is called at collection time by a Meter.t, which supplies the clock.

All instruments register themselves into a global list on creation via register, so any meter can collect the full set in one pass. Make sure to only create instruments at the toplevel so that the list doesn't grow forever.

type 'a t = {
  1. kind : string;
    (*

    "counter", "gauge", "histogram", …

    *)
  2. name : string;
  3. emit : clock:Clock.t -> unit -> Metrics.t list;
    (*

    Snapshot current accumulated state into metrics.

    *)
  4. update : 'a -> unit;
    (*

    Record a new value.

    *)
}
val register : 'a t -> unit

Add an instrument's emit to all. Called automatically by the standard instrument-creation functions.

module type CUSTOM_IMPL = sig ... end

Implementation details for a custom stateful instrument. Pass to Make to obtain a create function.

module Make (I : CUSTOM_IMPL) : sig ... end

Build a custom instrument type from a CUSTOM_IMPL. The returned create registers the instrument into all automatically.

module Int_counter : sig ... end
module Float_counter : sig ... end
module Int_gauge : sig ... end
module Float_gauge : sig ... end
module Histogram : sig ... end
module Internal : sig ... end