6.1 KiB
6.1 KiB
Grafana Dashboards - Detailed Reference
What is a Dashboard?
A Grafana dashboard is a set of one or more panels organized into rows, providing an at-a-glance view of related information. Dashboards connect to data sources, display data through panels, and support interactive filtering via variables.
Core Components
- Panels: Containers that display visualizations; each combines a query + a visualization type
- Rows: Horizontal groupings of panels; can be collapsed for organization
- Data Sources: Connections to databases, APIs, or services that panels query
- Variables: Dropdown selectors at the top of a dashboard for dynamic filtering
- Annotations: Markers overlaid on graphs to indicate events
Creating Dashboards
From scratch
- Click Dashboards in the left sidebar
- Click New > New dashboard
- Click Add visualization to add your first panel
- Select a data source, write a query, choose visualization type
- Click Apply to save the panel to the dashboard
- Click the save icon (or Ctrl+S) to save the dashboard
From a template / Import
- Click Dashboards > New > Import
- Paste a dashboard JSON, enter a Grafana.com dashboard ID, or upload a JSON file
- Grafana.com hosts thousands of community dashboards (grafana.com/grafana/dashboards)
Dashboard Settings
Access via the gear icon at the top-right of any dashboard.
| Setting | Description |
|---|---|
| General | Name, description, tags, folder, editable flag |
| Annotations | Configure annotation queries that overlay events on panels |
| Variables | Add/edit template variables (dropdowns at top) |
| Links | Add links to other dashboards or external URLs |
| JSON Model | View/edit raw JSON for the entire dashboard |
| Versions | Browse and restore prior versions |
| Time options | Default time range, auto-refresh intervals, timezone |
Time Range Controls
- Time picker (top-right): Select absolute or relative ranges (Last 6 hours, Last 7 days, etc.)
- Auto-refresh: Set to Off, 5s, 10s, 30s, 1m, 5m, etc.
- Zoom: Click-drag on any time series to zoom in
Common relative time shortcuts
now-5m last 5 minutes
now-1h last 1 hour
now-24h last 24 hours
now-7d last 7 days
now/d today so far
now-1d/d yesterday
Annotations
Annotations are event markers overlaid on time series panels.
Types
- Native annotations: Manually add a note to a specific time directly in the dashboard
- Query annotations: Pull events from a data source and display as markers
Adding a manual annotation
- Hold Ctrl (or Cmd on Mac) and click a time series panel
- Type a description; optionally set a time range
Library Panels
Library panels are reusable panel definitions shared across multiple dashboards.
- Create: Panel menu (3-dot) > "Create library panel"
- Use: Add a panel > "Add from panel library"
- Update: Edit the source panel; all dashboards using it reflect the change
- Unlink: Detach to make it independent in a specific dashboard
Panel Layout
- Drag panel corners to resize
- Drag panel header to move
- Add > Row to insert collapsible rows
- Panel menu > Duplicate to clone within the same dashboard
Dashboard Versions
- Access via Dashboard Settings > Versions
- See who saved what and when
- Compare two versions (diff view)
- Restore any previous version
JSON Model
Every dashboard is stored as a JSON document.
Key top-level JSON fields:
{
"title": "My Dashboard",
"uid": "abc123",
"tags": ["production", "infrastructure"],
"time": { "from": "now-6h", "to": "now" },
"refresh": "30s",
"panels": [],
"templating": { "list": [] },
"annotations": { "list": [] }
}
Sharing Dashboards
Share link
- Click Share icon > Link tab
- Toggle "Lock time range" to embed the current time window
- Toggle "Include template variable values"
Snapshot
- Share > Snapshot: Creates a read-only, public snapshot
- Contains rendered data at share time - no live data source access needed
- Can expire (1 hour, 1 day, 7 days, or never)
Export / Import JSON
- Share > Export: Download the dashboard JSON
- Import at Dashboards > New > Import
- Useful for version control, migration, sharing with the community
Embed
- Share > Embed: Generates an iframe HTML snippet
- Requires anonymous access in Grafana config (OSS/Enterprise only)
Public dashboards (Grafana 10+)
- Make a dashboard publicly accessible with no login
- Enable per-dashboard in Share > Public dashboard
Playlists
Playlists cycle through dashboards automatically at a configurable interval.
- Create at Dashboards > Playlists > New playlist
- Add dashboards by name or tag
- Set interval (e.g., 5 minutes)
- Append
?kiosk=1to URL for kiosk/TV mode
Best Practices
- Organize with folders: Use folders as RBAC permission boundaries
- Use variables: Make dashboards reusable across environments/services
- Limit panels per dashboard: Aim for <20 panels for performance
- Use library panels: Standardize common panels across teams
- Tag dashboards: Consistent tags for searchability
- Version control: Export JSON and store in Git
- Use rows: Collapse related panels to organize complex dashboards
- Template your queries: Use variables so one dashboard covers many targets
Keyboard Shortcuts
| Key | Action |
|---|---|
Ctrl+S |
Save dashboard |
e |
Open panel editor (when panel focused) |
v |
Toggle panel fullscreen |
d r |
Refresh all panels |
d s |
Dashboard settings |
d k |
Toggle kiosk mode |
? |
Show all shortcuts |
Provisioning Dashboards (as Code)
# /etc/grafana/provisioning/dashboards/default.yaml
apiVersion: 1
providers:
- name: default
orgId: 1
folder: Infrastructure
type: file
disableDeletion: false
updateIntervalSeconds: 10
allowUiUpdates: false
options:
path: /var/lib/grafana/dashboards
foldersFromFilesStructure: true
Place dashboard JSON files in /var/lib/grafana/dashboards/. Subdirectories become folders when foldersFromFilesStructure: true.