Configure Grafana Dashboards Process
Purpose
This runbook defines the dashboard-as-code workflow for Grafana in this repository.
Principles
- Store dashboard JSON files in the repository.
- Provision datasources and dashboards through Ansible.
- Avoid manual dashboard edits in Grafana UI for persistent changes.
- Keep upstream dashboard sources and local adaptations in source control.
Role Components
- Dashboard and datasource defaults: roles/grafana_setup/defaults/main/main.yml
- Provisioning tasks: roles/grafana_setup/tasks/main.yml
- Datasource provisioning template: roles/grafana_setup/templates/provisioning-datasources.yml.j2
- Dashboard provider provisioning template: roles/grafana_setup/templates/provisioning-dashboards.yml.j2
- Vendored dashboard files: roles/grafana_setup/files/dashboards/nginx-prometheus-exporter.dashboard.json
- Deployment playbook: playbooks/grafana/deploy_grafana.yml
- Grafana inventory: inventory/grafana/inventory.ini
Standard Workflow
- Choose an upstream dashboard JSON or create a custom one.
- Save dashboard JSON under roles/grafana_setup/files/dashboards.
- Ensure datasource and provider provisioning templates are aligned.
- Deploy Grafana using playbooks/grafana/deploy_grafana.yml.
- Validate dashboard panels and datasource connectivity in Grafana UI.
Provisioning Flow
- Grafana role creates provisioning directories.
- Grafana role renders datasource provisioning file.
- Grafana role renders dashboard provider provisioning file.
- Grafana role copies dashboard JSON files into Grafana dashboards path.
- Grafana service reload/start applies provisioning.
Add a New Dashboard
- Add JSON file to roles/grafana_setup/files/dashboards.
- If needed, add role defaults in roles/grafana_setup/defaults/main/main.yml.
- Ensure copy/provisioning tasks in roles/grafana_setup/tasks/main.yml include the dashboard.
- Run deployment playbook for Grafana hosts.
Validation Checklist
- ansible-playbook –syntax-check passes for playbooks/grafana/deploy_grafana.yml.
- ansible-inventory –graph passes for inventory/grafana/inventory.ini.
- Grafana service is active after deploy.
- Prometheus datasource exists and is default.
- Dashboard appears in expected folder.
- Panels return data without datasource errors.
Maintenance
- Keep dashboard UID stable to avoid duplicate dashboards.
- Keep local modifications minimal and explicit.
- Revalidate dashboards when Prometheus metric names or jobs change.
- Use pull requests for all dashboard changes.