A lightweight library for dynamic dispatching of events in Erlang/Elixir, focused on metrics and instrumentation.
Telemetry is a lightweight library for dynamic dispatching of events in Erlang and Elixir applications, with a focus on metrics and instrumentation. It allows libraries to emit events and enables other code to attach custom handlers to those events, providing a unified way to collect and process telemetry data across the ecosystem.
Erlang and Elixir developers building libraries or applications that require instrumentation, metrics collection, or event-based monitoring.
Developers choose Telemetry because it offers a standardized, lightweight way to handle instrumentation across the Erlang/Elixir ecosystem, reducing the need for custom solutions and enabling better interoperability between libraries.
Dynamic dispatching library for metrics and instrumentations.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Designed as a minimal library not tied to specific tooling, allowing integration with any monitoring solution, as emphasized in the README's focus on replacing custom instrumentation layers.
Events are emitted as lists of atoms, and handlers can be attached dynamically, providing flexibility for libraries and applications to hook into events without tight coupling.
Includes telemetry:span/3 to uniformly capture start, stop, and exception events for discrete operations, simplifying instrumentation with built-in timing measurements.
Aims to unify telemetry across the Erlang/Elixir ecosystem, reducing fragmentation and enabling interoperability between libraries, as stated in the philosophy section.
Handlers are invoked synchronously on each event, which can block the emitter if handlers perform slow operations, requiring manual offloading to separate processes as warned in the README.
Telemetry only dispatches events; users must implement or integrate separate systems for metrics storage, visualization, and alerting, adding complexity for end-to-end monitoring.
Requires explicit attachment of handlers to events, which can be verbose and error-prone compared to more automated or declarative instrumentation solutions.