Skip to content

nju520/asynqmon

 
 

Repository files navigation

Asynqmon logo

A modern web based tool for monitoring & administrating Asynq queues, tasks and message broker

Overview

Asynqmon is both a library that you can include in your web application, as well as a binary that you can simply install and run.

Version Compatibility

Asynq version WebUI (asynqmon) version
0.19.x 0.4.x
0.18.x 0.2.x, 0.3.x
0.16.x, 0.17.x 0.1.x

Install the binary

Release binaries

You can download the release binary for your system from the releases page.

Docker image

To pull the Docker image:

# Pull the latest image
docker pull hibiken/asynqmon

# Or specify the image by tag
docker pull hibiken/asynqmon[:tag]

Building from source

To build Asynqmon from source code, make sure you have Go installed (download). Version 1.16 or higher is required. You also need Node.js and Yarn installed in order to build the frontend assets.

Download the source code of this repository and then run:

make build

The asynqmon binary should be created in the current directory.

Building Docker image locally

To build Docker image locally, run:

make docker

Run the binary

To use the defaults, simply run and open http://localhost:8080.

# with a local binary
./asynqmon

# with docker
docker run --rm \
    --name asynqmon \
    -p 8080:8080 \
    hibiken/asynqmon

By default, Asynqmon web server listens on port 8080 and connects to a Redis server running on 127.0.0.1:6379.

To see all available flags, run:

# with a local binary
./asynqmon --help

# with Docker
docker run hibiken/asynqmon --help

Here's the available flags:

Note: Use --redis-url to specify address, db-number, and password with one flag value; Alternatively, use --redis-addr, --redis-db, and --redis-password to specify each value.

Flag Description Default
--port(int) port number to use for web ui server 8080
---redis-url(string) URL to redis server ""
--redis-addr(string) address of redis server to connect to "127.0.0.1:6379"
--redis-db(int) redis database number 0
--redis-password(string) password to use when connecting to redis server ""
--redis-cluster-nodes(string) comma separated list of host:port addresses of cluster nodes ""
--redis-tls(string) server name for TLS validation used when connecting to redis server ""
--redis-insecure-tls(bool) disable TLS certificate host checks false

Examples

# with a local binary; custom port and connect to redis server at localhost:6380
./asynqmon --port=3000 --redis-addr=localhost:6380

# with Docker (connect to a Redis server running on the host machine)
docker run --rm \
    --name asynqmon \
    -p 3000:3000 \
    hibiken/asynqmon --port=3000 --redis-addr=host.docker.internal:6380

# with Docker (connect to a Redis server running in the Docker container)
docker run --rm \
    --name asynqmon \
    --network dev-network \
    -p 8080:8080 \
    hibiken/asynqmon --redis-addr=dev-redis:6379

Next, go to localhost:8080 and see Asynqmon dashboard:

Web UI Queues View

Tasks view

Web UI TasksView

Settings and adaptive dark mode

Web UI Settings and adaptive dark mode

Import as a Library

GoDoc

Asynqmon is also a library which can be imported into an existing web application.

Example with net/http:

package main

import (
	"log"
	"net/http"

	"github.com/hibiken/asynq"
	"github.com/hibiken/asynqmon"
)

func main() {
	h := asynqmon.New(asynqmon.Options{
		RootPath: "/monitoring", // RootPath specifies the root for asynqmon app
		RedisConnOpt: asynq.RedisClientOpt{Addr: ":6379"},
	})

    // Note: We need the tailing slash when using net/http.ServeMux.
	http.Handle(h.RootPath()+"/", h)

	// Go to http://localhost:8080/monitoring to see asynqmon homepage.
	log.Fatal(http.ListenAndServe(":8080", nil))
}

Example with gorilla/mux:

package main

import (
	"log"
	"net/http"

	"github.com/gorilla/mux"
	"github.com/hibiken/asynq"
	"github.com/hibiken/asynqmon"
)

func main() {
	h := asynqmon.New(asynqmon.Options{
		RootPath: "/monitoring", // RootPath specifies the root for asynqmon app
		RedisConnOpt: asynq.RedisClientOpt{Addr: ":6379"},
	})

	r := mux.NewRouter()
	r.PathPrefix(h.RootPath()).Handler(h)

	srv := &http.Server{
		Handler: r,
		Addr:    ":8080",
	}

	// Go to http://localhost:8080/monitoring to see asynqmon homepage.
	log.Fatal(srv.ListenAndServe())
}

License

Copyright (c) 2019-present Ken Hibino and Contributors. Asynqmon is free and open-source software licensed under the MIT License. Official logo was created by Vic Shóstak and distributed under Creative Commons license (CC0 1.0 Universal).

About

Real-time monitor and web admin for Asynq distributed task queue

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 83.7%
  • Go 14.8%
  • HTML 1.1%
  • Other 0.4%