← All Articles

Oban Web v2.10 Released

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 timeseries 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 historic 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. In order to minimize load on the application’s database, only the most recent 100k jobs (approximately) are filtered. 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 and meta 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 that is replicated between nodes, filterable by label, arbitrarily mergeable over windows of time, and compacted for longer 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 for use from your own 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 finally share them. Please Play with the demo, try giving the RC a spin, and share your feedback with us!

See the full Web Changelog for a complete list of changes, enhancements, and bug fixes.


As usual, if you have any questions or comments, ask in the Elixir Forum or the #oban channel on Elixir Slack. For future announcements and insight into what we're working on next, subscribe to our newsletter.