A tool for tracking and visualizing metrics in Elixir applications, with integrations for Phoenix and Ecto.
Beaker is a metrics tracking library for Elixir projects designed to simplify the registration and visualization of application statistics. It provides an easy way to monitor performance and key indicators, such as response times, error rates, and database query performance, helping developers gain insights into their system's behavior. The library offers ephemeral, in-memory storage for metrics, which are not persisted across application restarts.
Elixir developers building web applications with Phoenix or using Ecto for database interactions, who need a straightforward way to monitor application performance and metrics without external dependencies. It is particularly suited for teams seeking integrated visualization and real-time tracking within their existing Elixir ecosystem.
Developers choose Beaker for its simplicity and seamless integration with popular Elixir frameworks like Phoenix and Ecto, offering built-in web visualization and automatic performance tracking. Its focus on developer-friendly APIs, ephemeral storage, and automatic aggregation of time-series data provides a lightweight, no-fuss alternative to more complex metrics systems.
A mirror for https://git.sr.ht/~hwrd/beaker
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Integrates directly with Phoenix for automatic request tracking via a plug and Ecto for query monitoring with a simple use statement, as shown in the README setup examples.
Provides a visual dashboard at /beaker in Phoenix apps, displaying gauges, counters, and time series charts using the beaker-frontend project for easy real-time monitoring.
Aggregates time series data per minute to compute min, max, average, and count automatically, simplifying trend analysis without manual intervention, as detailed in the aggregation section.
Offers intuitive functions like set, get, incr, and time for gauges, counters, and time series, with clear code examples that reduce boilerplate.
Metrics are stored in-memory and lost on application restart, as explicitly noted in the README, making it unsuitable for long-term monitoring or disaster recovery.
The aggregation algorithm is admitted to be slow, with performance degrading to 3-15 milliseconds per run under moderate loads, potentially impacting system latency.
Phoenix integration tracks all requests without splitting by controllers or static assets, and Ecto integration lacks query type breakdowns, reducing actionable insights.
Visualization relies on a separate beaker-frontend repository, adding setup complexity and potential versioning issues to maintain the web interface.