Arena
An intuitive Web GUI for Bee Queue and Bull. Built on Express so you can run Arena standalone, or mounted in another app as middleware.
For a quick introduction to the motivations for creating Arena, read Interactively monitoring Bull, a Redis-backed job queue for Node.
Screenshots
Features
- Check the health of a queue and its jobs at a glance
- Paginate and filter jobs by their state
- View details and stacktraces of jobs with permalinks
- Restart and retry jobs with one click
Usage
Prerequisites
Configure your queues in the "queues" key of index.json
. Queues take the following format:
{
"name": "my_queue",
"port": 6381,
"host": "127.0.0.1",
"hostId": "AWS Server 2"
}
The name
, port
, host
, and hostId
fields are required. hostId
can be given any name, so it is recommended to give it a helpful name for reference.
Optionally, you can also pass in db
and password
to configure redis credentials, or prefix
to specify the customized prefix of the queue.
You can also provide a url
field instead of host
, port
db
and password
.
To specify a custom file location, see "Running Arena as a node module".
Note that if you happen to use Amazon Web Services' Elasticache as your Redis host, check out http://mixmax.com/blog/bull-queue-aws-autodiscovery
Running the server
Run npm install
to fetch Arena's dependencies. Then run npm start
to start the server.
Note that because Arena is dependent on async
/await
, Arena only currently supports Node >7
.
Running Arena as a node module
Alternatively, you can use Arena as a node module. This has potential benefits:
- Arena can be configured to use any method of server/queue configuration desired
- for example, fetching available redis queues from an AWS instance on server start
- or even just plain old reading from environment variables
- Arena can be mounted in other express apps as middleware
Usage:
In project folder:
yarn add bull-arena
In router.js:
const Arena = require('bull-arena');
const express = require('express');
const router = express.Router();
const arena = Arena({queues});
router.use('/', arena);
Arena
takes two arguments. The first, config
, is a plain object containing the queue configuration. The second, listenOpts
, is an object that can contain the following optional parameters:
port
- specify custom port to listen on (default: 4567)basePath
- specify custom path to mount server on (default: '/')disableListen
- don't let the server listen (useful when mounting Arena as a sub-app of another Express app) (default: false)
Bee Queue support
Arena is dual-compatible with Bull 3.x and Bee-Queue 1.x. To add a Bee queue to the Arena dashboard, include the type: bee
attribute with an individual queue's configation object.
Docker image
You can now docker pull
Arena from Docker Hub.
To build the image simply run:
docker build -t <name-image> .
To run a container, execute the following command. Note that we need to settle the location of index.json
in this container via volume mounting:
docker run -p 4567:4567 -v </local/route/to/index.json>:/opt/arena/src/server/config/index.json <name-image>
Development
Arena is written using Express, with simple jQuery and Handlebars on the front end.
If updating dependencies, please use Yarn and update the yarn.lock
file before submitting a pull request.
License
The MIT License.