Snakepit.Telemetry.Naming (Snakepit v0.6.10)
View SourceEvent catalog and naming validation for Snakepit telemetry.
This module ensures atom safety by maintaining a curated catalog of all valid telemetry events and measurement keys. Python-originated events must pass through this module to prevent arbitrary atom creation.
Python Event Catalog
python_event_catalog/0 lists the event strings emitted by snakepit_bridge
and the measurement keys they are expected to use. When adding a new Python
telemetry event, update that catalog and the allowlist in
snakepit_bridge.telemetry.stream together so both languages agree on the
schema.
Summary
Functions
Build an event name from components.
Convert Python event parts to a valid Elixir telemetry event name.
Build a gRPC event name.
Get all valid gRPC events.
Validate a measurement key and convert to atom if it's in the allowlist.
Get all valid measurement keys.
Build a pool event name.
Get all valid pool events.
Build a Python event name.
Return the catalog describing Python event names, their telemetry atoms, and expected measurements.
Get all valid Python events.
Build a session event name.
Get all valid session events.
Functions
Build an event name from components.
Examples
iex> Snakepit.Telemetry.Naming.event(:pool, :worker, :spawned)
[:snakepit, :pool, :worker, :spawned]
Convert Python event parts to a valid Elixir telemetry event name.
Returns {:ok, event_name} if the parts map to a known event,
{:error, reason} otherwise.
Examples
iex> Snakepit.Telemetry.Naming.from_parts(["python", "call", "start"])
{:ok, [:snakepit, :python, :call, :start]}
iex> Snakepit.Telemetry.Naming.from_parts(["unknown", "event"])
{:error, :unknown_event}
Build a gRPC event name.
Get all valid gRPC events.
Validate a measurement key and convert to atom if it's in the allowlist.
Examples
iex> Snakepit.Telemetry.Naming.measurement_key("duration")
{:ok, :duration}
iex> Snakepit.Telemetry.Naming.measurement_key("unknown_key")
{:error, :unknown_measurement_key}
Get all valid measurement keys.
Build a pool event name.
Get all valid pool events.
Build a Python event name.
Return the catalog describing Python event names, their telemetry atoms, and expected measurements.
Get all valid Python events.
Build a session event name.
Get all valid session events.