Oban.Web is a view of Oban’s inner workings that you host directly within your Phoenix application. Powered by Oban Metrics and Phoenix Live View, it is distributed, lightweight, and fully real-time.
Check out the live demo.
You can read the original announcement on the Oban blog (complete with embedded videos)
The first Oban Web v2.10 release candidate is out! Oban Web v2.10 brings a few long-awaited
features like realtime charts, auto-complete powered filtering, keyboard shortcuts, and massive
performance improvements for high throughput systems.
Realtime Charts
Charts for realtime metrics are enabled out of the box without any external dependencies. Charts are helpful for monitoring health and troubleshooting from within Oban Web because not all apps can, or will run an extra time-series or metrics database. And, because they’re displayed alongside the original jobs, you can identify outliers in aggregate and then drill into individual jobs.
Highlights
- Select between execution counts, full counts, execution time, and wait time
- Aggregate time series by state, node, worker, or queue label
- Rollup metrics by time from 1s to 2m, spanning 90s to 3h of historical data
- Measure execution and wait times across percentiles, from 100th down to 50th at standard
intervals
Filtering with Auto-complete
Filtering is entirely overhauled with a new auto-complete interface, new qualifier syntax, and vastly more performant queries. Full text searching with unindexable operators such as ilike
and tsvector
was removed in favor of highly optimized exact-match queries. With the new query syntax, all searching is faster, and searching nested args
is over 100x faster thanks to index usage.
One additional performance improvement for large oban_jobs
tables is threshold querying. Only the most recent 100k jobs (approximately) are filtered to minimize load on the application’s database. The 100k limit can be disabled or configured for each state, i.e., you could restrict filtering completed
jobs but access the full history of cancelled
jobs.
Highlights
- Filter by args, meta, node, priority, queue, tags, and worker
- Typeahead with keyboard shortcuts for focusing, selecting, and completing suggestions
- Highly optimized suggestion queries across a configurable number of recent jobs
- Locally cached for immediate feedback and minimal load on your application database
- Auto-completion of nested
args
andmeta
keys and values at any depth
Metrics
The foundation of charts, filtering, optimized counts, and realtime monitoring is the new Oban.Met
package. It introduces a distributed time-series data store and replaces both Oban.Plugins.Gossip
and Oban.Web.Plugins.Stats
with zero-config implementations that are much more efficient.
Highlights
- Telemetry-powered execution tracking for time-series data replicated between nodes, filterable by label, arbitrarily mergeable over windows of time, and compacted for more extended playback.
- Centralized counting across queues and states with exponential backoff to minimize load and data replication between nodes.
- Ephemeral data storage via data replication with handoff between nodes. All nodes have a shared view of the cluster’s data, and new nodes are caught up when they come online.
In the future, Oban.Met
modules will be public, documented, and available from your applications.
Upgrading
Most apps can upgrade by pinning to the latest release and removing unused plugins from their configuration. Oban Met starts supervised collectors automatically in fitting environments, and the old plugins aren’t necessary.
plugins: [
- Oban.Plugins.Gossip,
- Oban.Web.Plugins.Stats,
...
Point deps
to the release candidate once the plugins are removed:
{:oban_web, "2.10.0-rc.2", repo: :oban}
Until Next Time
We’ve planned some of these features since the first sketch of an Oban dashboard and are delighted
to share them finally. Please Play with the demo, try giving the RC a spin, and share your
feedback with us!
See the complete Web Changelog for a full list of changes, enhancements, and bug fixes.