2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-12-27 00:02:19 +08:00
asynq/tools/asynqmon
2020-02-22 21:21:55 -08:00
..
cmd Add workers command to asynqmon 2020-02-22 21:21:55 -08:00
main.go Add license comment to all src files 2020-01-02 18:13:16 -08:00
README.md [ci skip] Update readme and changelog 2020-02-13 06:23:51 -08:00

Asynqmon

Asynqmon is a command line tool to monitor the tasks managed by asynq package.

Table of Contents

Installation

In order to use the tool, compile it using the following command:

go get github.com/hibiken/asynq/tools/asynqmon

This will create the asynqmon executable under your $GOPATH/bin directory.

Quickstart

The tool has a few commands to inspect the state of tasks and queues.

Run asynqmon help to see all the available commands.

Asynqmon needs to connect to a redis-server to inspect the state of queues and tasks. Use flags to specify the options to connect to the redis-server used by your application.

By default, Asynqmon will try to connect to a redis server running at localhost:6379.

Stats

Stats command gives the overview of the current state of tasks and queues. You can run it in conjunction with watch command to repeatedly run stats.

Example:

watch -n 3 asynqmon stats

This will run asynqmon stats command every 3 seconds.

Gif

History

History command shows the number of processed and failed tasks from the last x days.

By default, it shows the stats from the last 10 days. Use --days to specify the number of days.

Example:

asynqmon history --days=30

Gif

Process Status

PS (ProcessStatus) command shows the list of running worker processes.

Example:

asynqmon ps

Gif

List

List command shows all tasks in the specified state in a table format

Example:

asynqmon ls retry
asynqmon ls scheduled
asynqmon ls dead
asynqmon ls enqueued:default
asynqmon ls inprogress

Enqueue

There are two commands to enqueue tasks.

Command enq takes a task ID and moves the task to Enqueued state. You can obtain the task ID by running ls command.

Example:

asynqmon enq d:1575732274:bnogo8gt6toe23vhef0g

Command enqall moves all tasks to Enqueued state from the specified state.

Example:

asynqmon enqall retry

Running the above command will move all Retry tasks to Enqueued state.

Delete

There are two commands for task deletion.

Command del takes a task ID and deletes the task. You can obtain the task ID by running ls command.

Example:

asynqmon del r:1575732274:bnogo8gt6toe23vhef0g

Command delall deletes all tasks which are in the specified state.

Example:

asynqmon delall retry

Running the above command will delete all Retry tasks.

Kill

There are two commands to kill (i.e. move to dead state) tasks.

Command kill takes a task ID and kills the task. You can obtain the task ID by running ls command.

Example:

asynqmon kill r:1575732274:bnogo8gt6toe23vhef0g

Command killall kills all tasks which are in the specified state.

Example:

asynqmon killall retry

Running the above command will move all Retry tasks to Dead state.

Cancel

Command cancel takes a task ID and sends a cancelation signal to the goroutine processing the specified task.
You can obtain the task ID by running ls command.

The task should be in "in-progress" state. Handler implementation needs to be context aware in order to actually stop processing.

Example:

asynqmon cancel bnogo8gt6toe23vhef0g

Config File

You can use a config file to set default values for the flags. This is useful, for example when you have to connect to a remote redis server.

By default, asynqmon will try to read config file located in $HOME/.asynqmon.(yaml|json). You can specify the file location via --config flag.

Config file example:

uri: 127.0.0.1:6379
db: 2
password: mypassword

This will set the default values for --uri, --db, and --password flags.