plushie/telemetry

Thin wrapper over the Erlang telemetry library.

Provides a Gleam-friendly API for emitting telemetry events. Event names are lists of strings that get converted to atom lists for the underlying :telemetry.execute/3 call.

Usage

import gleam/dict
import gleam/dynamic
import plushie/telemetry

telemetry.execute(
  ["plushie", "bridge", "send"],
  dict.from_list([#("byte_size", dynamic.from(42))]),
  dict.new(),
)

Values

pub fn attach(
  handler_id: String,
  event_name: List(String),
  handler: fn(
    List(String),
    dict.Dict(String, dynamic.Dynamic),
    dict.Dict(String, dynamic.Dynamic),
  ) -> Nil,
  config: dynamic.Dynamic,
) -> Result(Nil, dynamic.Dynamic)

Attach a handler for a telemetry event.

The handler function receives the event name, measurements, metadata, and the config value passed here.

Returns Ok(Nil) on success, Error(reason) if the handler ID is already in use.

pub fn detach(handler_id: String) -> Nil

Detach a previously attached handler by ID.

pub fn execute(
  event_name: List(String),
  measurements: dict.Dict(String, dynamic.Dynamic),
  metadata: dict.Dict(String, dynamic.Dynamic),
) -> Nil

Emit a telemetry event.

  • event_name: list of strings identifying the event (converted to atoms internally, e.g. ["plushie", "bridge", "send"]).
  • measurements: numeric measurements (byte_size, duration, etc.).
  • metadata: contextual information (reason, format, etc.).
Search Document