Skip to content
This repository has been archived by the owner on Mar 5, 2023. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
April 15, 2018 22:58
April 15, 2018 18:12
April 15, 2018 18:12
April 14, 2018 18:05
April 14, 2018 18:05

matrix-monitor-bot TravisCI badge

A bot to measure latency between homeservers, as perceived by users.


Assuming Go 1.9 is already installed on your PATH:

# Get it
git clone
cd matrix-monitor-bot

# Set up the build tools
export GOPATH="$currentDir/vendor/src:$currentDir/vendor:$currentDir:"$GOPATH
go get
export PATH=$PATH":$currentDir/vendor/bin:$currentDir/vendor/src/bin"

# Build it
gb vendor restore
gb build

# Configure it (edit monitor-bot.yaml to meet your needs)
cp config.sample.yaml monitor-bot.yaml

# Run it

Installing in Alpine Linux

The steps are almost the same as above. The only difference is that gb build will not work, so instead use the following lines:

go build -o bin/monitor_bot ./src/


/path/to/matrix-monitor-bot should always be pointed to a folder that has your monitor-bot.yaml file in it. If the config file does not exist, one will be created for you (and promptly not work because it doesn't have a valid config). A folder named logs will also be created here (assuming you use the default configuration).

From Docker Hub:

docker run -p 8080:8080 -v /path/to/matrix-monitor-bot:/data turt2live/matrix-monitor-bot

Build the image yourself:

git clone
cd matrix-monitor-bot
docker build -t matrix-monitor-bot .
docker run -p 8080:8080 -v /path/to/matrix-monitor-bot:/data matrix-monitor-bot

Prometheus Metrics

If metrics are enabled in your config, matrix-monitor-bot will serve up metrics for scraping by Prometheus. Every metric that is exported is a Histogram metric. The following metrics are exported:

  • monbot_ping_send_delay_seconds - Number of seconds for the origin to send a ping to their homeserver
  • monbot_ping_receive_delay_seconds - Number of seconds for a bot to receive a ping
  • monbot_ping_time_seconds - Total number of seconds for a ping to go through (from the remote bot to the receiver)


TODO: This section

  • How the bot measures things
  • What the Prometheus metrics are
  • Why the bot uses and not a custom event
  • Why the bot uses messages for pongs instead of read receipts
  • Why the display name gets overwritten and how it is used
  • Why someone should run this on their server