Web service which renders SVG plots from Prometheus data
4 months ago
4 months ago


chartsrv is a dead-simple web application which runs Prometheus queries and charts the result as an SVG. You make a dashboard by putting a lot of these images into a web page. You make it refresh by adding <meta id="refresh" http-equiv="refresh" content="5"> to the header. Ta-da!

Live graph from metrics.sr.ht

This is a live graph from metrics.sr.ht

#Running the daemon

$ go build -o chartsrv main.go
$ ./chartsrv https://prometheus.example.org
Listening on :8142

Forward /chart.svg to this address with your favorite reverse proxy. If you want to listen to some other port, pass a second argument like :1337.


Create a URL like https://chartsrv.example.org/chart.svg?query=...&args... and set the query parameters as appropriate:

  • query: required. Prometheus query to execute.
  • title: chart title
  • stacked: set to create an area chart instead of a line chart
  • since, until: time.ParseDuration to set distance in the past to start charting from or until
  • width, height: adjust chart dimensions in inches
  • step: number of seconds between data points
  • min, max: Y axis limits
  • label: template for the chart legend in Go's text/template format. All values provided by prometheus as tags are available - to label each matching result by the instance, for instance, use {{.instance}}