Foundation.Contracts.Telemetry behaviour (foundation v0.1.0)
Behaviour contract for telemetry implementations.
Defines the interface for metrics collection, event emission, and monitoring across different telemetry backends.
Summary
Callbacks
Attach event handlers for specific events.
Check if telemetry is available.
Detach event handlers.
Emit a counter metric.
Emit a gauge metric.
Execute telemetry event with measurements.
Get collected metrics.
Initialize the telemetry service.
Measure execution time and emit results.
Get telemetry service status.
Types
Callbacks
@callback attach_handlers([event_name()]) :: :ok | {:error, Foundation.Types.Error.t()}
Attach event handlers for specific events.
@callback available?() :: boolean()
Check if telemetry is available.
@callback detach_handlers([event_name()]) :: :ok
Detach event handlers.
@callback emit_counter(event_name(), metadata()) :: :ok
Emit a counter metric.
@callback emit_gauge(event_name(), metric_value(), metadata()) :: :ok
Emit a gauge metric.
@callback execute(event_name(), measurements(), metadata()) :: :ok
Execute telemetry event with measurements.
@callback get_metrics() :: {:ok, map()} | {:error, Foundation.Types.Error.t()}
Get collected metrics.
@callback initialize() :: :ok | {:error, Foundation.Types.Error.t()}
Initialize the telemetry service.
@callback measure(event_name(), metadata(), (-> result)) :: result when result: var
Measure execution time and emit results.
@callback status() :: {:ok, map()} | {:error, Foundation.Types.Error.t()}
Get telemetry service status.