Grafana Associate study materials
Grafana Associate study resources

Grafana Associate: Dashboards, Variables, and Sharing

Grafana Associate · Work through your exam, one topic at a time.

All guide sections

Dashboards, Variables, and Sharing

This domain covers dashboard lifecycle, templating with variables, and distributing dashboards safely. The exam tests variable syntax and refresh behavior, repeating panels, version history, snapshots and links.

Dashboard model and settings

A Grafana dashboard is stored as a JSON model. Dashboard settings contains general options, variables, annotations, links and versions. Save as creates a copy; Version history restores earlier revisions. Folders organize dashboards, and permissions apply at folder or dashboard level where supported. Annotations mark events on panels, and dashboard links connect related dashboards.

Variables and repetition

Variable types include Query, Custom, Text box, Constant, Data source, Interval and Ad hoc filters. Reference them as $var or ${var}; the legacy [[var]] form still appears in older content. Multi-value variables and an All option need regex matching such as =~"$instance" rather than =. Query variables can be filtered with a regex, and their refresh can be set to On dashboard load or On time range change. Variables can chain: a later query variable can reference an earlier one. Panels and rows can repeat by variable.

Sharing and export

Share offers a direct link, a snapshot, export of the dashboard JSON, and embedding where enabled. Links can preserve the current time range and variable values. Snapshots are static: they do not update with new data. Public dashboards are available only where the feature is enabled. Playlists and kiosk mode are for unattended display.

Worked example

Create an environment query variable using label_values(environment). Create an instance query variable using label_values(up{environment="$environment"}, instance), enable multi-value and Include All, and set refresh to On time range change. In the panel query, use instance=~"$instance". The reasoning: the second variable depends on the first, so it must re-query when the environment changes; multi-value requires a regex operator; and refresh on time range change keeps new instances visible without a manual reload.

Traps that cost marks

  • Using = with a multi-value or All variable instead of =~.
  • Forgetting that query variables may need to refresh when a parent variable changes.
  • Assuming a snapshot updates with live data.
  • Sharing a link without checking time range and variable state.
  • Confusing folder permissions with dashboard-level permissions.