Is there a cleaner way to manage dashboards across multiple teams?

My company has many different components that lead into the final installer that deploys our product. I am looking for a way to have each team (with their own github repo) have a clean way to keep track of their own dashboards.

Right now, my understanding of introducing a new dashboard from another team is:

  • Team makes dashboard
  • Team posts a PR against our Grafana repo
  • Someone verifies the new dashboard has a unique dashboard ID and merges it into the Grafana repo

The workflow I would like is:

  • Team makes dashboard
  • Team commits dashboard to their local repo
  • Once everything is installed on the host machine, Grafana (at runtime) looks through a configured list of folders and loads all dashboards.

Is something like this possible?

You can read dashboards from multiple folders with dashboard provisioning:

That looks good! But I still need to solve the issue of ID conflicts with this approach right? One of the issues I am facing right now is all these cross-team dashboards will be made in isolation on each developer’s local grafana/component install. The last time I used Grafana (2-ish years ago), dashboards had auto-generated ID’s associated with them, and ID conflicts resulted in graphs not being rendered at all.

Provisioned dashboards must not have an id. Grafana will generate one on import.

We introduced a new unique identifier field for dashboards in Grafana v5.0 called uid. You can let Grafana generate this field for you or you can set it yourself to whatever suits you.