azutoolkit/dashforge
Dashforge is JoobQ Server Web Interface that allows you o monitor job queues processing, job latency, and errors in a beautiful LIVE components interface
Dashforge
A real-time Dashboard UI to monitor jobs for the background
job processing library JoobQ
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
About The Project
Many types of applications require background tasks that run independently of the
user interface (UI). Examples include batch jobs, intensive processing tasks, and
long-running processes such as workflows. Background jobs can be executed without
requiring user interaction--the application can start the job and then continue to
process interactive requests from users. This can help to minimize the load on the
application UI, which can improve availability and reduce interactive response times.
Dashforge Basic features include:
- Monitor current job processed (Total processed, completed, retried, dead)
- Job Queue Monitor (Jobs per Second, Total Errors, and Job Processing Latency)
Installation
Fly.io Deployment
To deploy to Fly.io use the fly.io directory toml file and
customize it as per your application needs.
Then using the fly command-line tool deploy your apps:
fly deploy -c ./fly.io/redis.toml
fly deploy -c ./fly.io/dashforge-worker.toml
fly deploy -c ./fly.io/dashforge.toml
Redis DB
Redis DB is where JoobQ stores and maintains the state of your Jobs as well as
create statistics using the Redis Timeseries module, and for this reason we recommend
deploy the time-series version of Redis which can be found at docker.io/redislabs/redistimeseries:latest
Worker Nodes
These worker nodes are your minions that process the Jobs, the more worker nodes
the more throughput.
# Load JoobQ Shard
require "joobq"
# Only needed for the Scheduler below
require "../src/jobs/**"
# Configure JoobQ
JoobQ.configure do
queue "queue:Email", ENV["EMAIL_QUEUE_WORKERS"].not_nil!.to_i, EmailJob
queue "queue:Fail", ENV["FAIL_QUEUE_WORKERS"].not_nil!.to_i, FailJob
queue "queue:Test", ENV["TEST_QUEUE_WORKERS"].not_nil!.to_i, TestJob
# Define periodic schedule these Jobs will execute at an interval
scheduler do
cron "5 4 * * *" { TestJob.perform(1) }
delay TestJob.new(1), for: 1.minute
every 1.hour, EmailJob
end
end
# Starts processing the queue
JoobQ.forge
sleepDocker
To build the Dockerfile in the root directory
docker build .
Docker Compose
docker-compose up
Roadmap
- Pagination of jobs
- Better Job Details
See the open issues for a
full list of proposed features (and known issues).
Contributing
Contributions are what the makes open-source community such an amazing place to learn,
inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and
create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
- Fork it (https://github.com/your-github-user/dashforge/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
- Elias J. Perez - creator and maintainer
