Automatic datasource configuration with Grafana 5
When I first started my Prometheus experiments with docker-compose one of the most awkward parts of the process, especially to document, were the manual steps required to click around the Grafana dashboard in order to add the Prometheus datasource. Thanks to the wonderful people behind Grafana there has been a push in the newest major version, 5 at time of writing, to make Grafana easier to automate. And it really does pay off.
Instead of forcing you to load the UI and play clicky clicky games with vague instructions to go here, and then the tab on the left, no, the other left, down a bit… you can now configure the data source with a YAML file that’s loaded on startup.
# from datasource.yaml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
isDefault: true
url: http://prometheus:9090
# don't set this to true in production
editable: true
Because I’m using this code base in a tinkering lab I set editable
to
true
. This allows me to make adhoc changes. In production you’d want
to make this false so people can’t accidentally break your backing store.
It only takes a little code to link everything together, add the
config file and expose it to the container. You can see all the
changes required in the
Upgrade grafana and configure datasource via a YAML file
pull request. Getting the exact YAML syntax, and confusing myself over
access proxy
vs direct
was the hardest part. It’s only a single step along
the way to a more automation friendly Grafana but it is an important one and a
positive example that they are heading in the right direction.