Skip to content
This repository has been archived by the owner on Jul 3, 2021. 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?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

📈 promplot

GoDoc Build Status Go Report Card

promplot is an opinionated tool to create plots from your Prometheus metrics and automatically sends them to you.

Slack example:

promplot -title "Open File Descriptors" -query "process_open_fds" -range "7d" -url $promurl -slack $slacktoken -channel stats

Demo Screenshot

Currently the only implemented transport is Slack. But feel free to add a new one!

Usage: promplot [flags...]

Create and deliver plots from your Prometheus metrics.

Save plot to file or send it right to a slack channel.
One of -slack or -file must be set.

  -channel string
        Required when -slack is set. Slack channel to post to.
  -file string
        File to save image to. Should have same extension as specified -format. Set -file to - to write to stdout.
  -format string
        Optional. Image format. For possible values see: (default "png")
  -query string
        Required. PQL query.
  -range value
        Required. Time to look back to. Format: 5d12h34m56s
        Optional. Suppress all output.
  -slack string
        Slack API token ( Set to post plot to Slack.
  -time value
        Time for query (default is now). Format like the default format of the Unix date command.
  -title string
        Optional. Title of graph. (default "Prometheus metrics")
  -url string
        Required. URL of Prometheus server.
        Print binary version.


  • With Go:
go get
brew install qvl/tap/promplot


It's simple to create a shell script for multiple plots:


common="-url $promurl -channel stats -slack $slacktoken -range 24h"

promplot $common \
  -title "Free memory in MB" \
  -query "node_memory_MemFree /1024 /1024"

promplot $common \
  -title "Free disk space in GB" \
  -query "node_filesystem_free /1024 /1024 /1024"

promplot $common \
  -title "Open file descriptors" \
  -query "process_open_fds"

Mailing results

There is no mail transport built into promplot but you can use the Linux mail utility instead:

tmp="$(mktemp -d)"
common="-url $promurl -range 24h"

promplot $common \
  -title "Free memory in MB" \
  -query "node_memory_MemFree /1024 /1024" \
  -file ${tmp}/memory.png

promplot $common \
  -title "Open file descriptors" \
  -query "process_open_fds" \
  -file ${tmp}/fds.png

echo "Your daily report is here." | mail \
  -s "Daily server stats" \
  -a ${tmp}/memory.png \
  -a ${tmp}/fds.png \

And with a scheduler like sleepto you can easily automate this script to run every day or once a week.


Make sure to use gofmt and create a Pull Request.

When changing external dependencies please use dep to vendor them.


Push a new Git tag and GoReleaser will automatically create a release.

Thank you

to these helpful open source projects promplot is built on top of: