Correlating data sources by environment (Grafana “Experiences”?)

Imagine an application/service/system that has multiple deployment environments, each with their own Prometheus and Loki instances.

Ideally, in a Grafana dashboard for that application/service/system, I would like to have a single dropdown where I choose an environment from a dynamic (not static) list, and that choice then determines which Prometheus and Loki data sources will be used in the dashboard.

Is there a good way to achieve that today?

While I was looking into this topic, I stumbled upon this blog post from March 2020 briefly mentioning an upcoming grouping mechanism called “Experience”:

Is this still something that is planned to be introduced in Grafana? I tried searching for clues in the Github repo and got a bit overwhelmed by the vast number of results returned when using the search term “Experience”.

Hi @jonas4 I was able to achieve something similar for my dashboard with the approach described here in where user only select environment name in the drop down and rest of the variables automatically derived based on the first variable.

1 Like

Thank you for the suggestion. I played around with the Infinity data source and managed to get a solution working based on which Prometheus and Loki data sources that are actually available.

Grafana Screen Shot

All Prometheus and Loki data sources follow the naming pattern <system>-<env>-<prometheus|loki>, e.g. sys1-env2-prometheus and sys1-env2-loki.

The solution makes use of three variables:

  • DS_PROMETHEUS lists the Prometheus data sources.
  • SYS_ENV is a hidden variable that queries Infinity for Collection($DS_PROMETHEUS). It extracts the <system>-<env> part of the selected Prometheus data source by using the regex /(.*)-prometheus/.
  • DS_LOKI lists the Loki data sources matching the filter /${SYS_ENV}-loki/.

I’m still very interested in hearing more about the upcoming grouping mechanism for data sources. Perhaps @aocenas can shed some light on its progress? I would really appreciate that.