This is documentation for the next version of Grafana documentation. For the latest stable release, go to the latest version.
Git Sync for development and production environments
Use separate Grafana instances for development and production. Each syncs with different Git locations to test dashboards before production.
Use it for
- Staged deployments: You need to test dashboard changes before production deployment.
- Change control: You require approvals before dashboards reach production.
- Quality assurance: You verify dashboard functionality in a non-production environment.
- Risk mitigation: You minimize the risk of breaking production dashboards.
Architecture
┌────────────────────────────────────────────────────────────┐
│ GitHub Repository │
│ Repository: your-org/grafana-manifests │
│ Branch: main │
│ │
│ grafana-manifests/ │
│ ├── dev/ │
│ │ ├── dashboard-new.json ← Development dashboards │
│ │ └── dashboard-test.json │
│ │ │
│ └── prod/ │
│ ├── dashboard-stable.json ← Production dashboards │
│ └── dashboard-approved.json │
└────────────────────────────────────────────────────────────┘
↕ ↕
Git Sync (dev/) Git Sync (prod/)
↕ ↕
┌─────────────────────┐ ┌─────────────────────┐
│ Dev Grafana │ │ Prod Grafana │
│ │ │ │
│ Repository: │ │ Repository: │
│ - path: dev/ │ │ - path: prod/ │
│ │ │ │
│ Creates folder: │ │ Creates folder: │
│ "grafana-manifests"│ │ "grafana-manifests"│
└─────────────────────┘ └─────────────────────┘Repository structure
In Git:
your-org/grafana-manifests
├── dev/
│ ├── dashboard-new.json
│ └── dashboard-test.json
└── prod/
├── dashboard-stable.json
└── dashboard-approved.jsonIn Grafana Dashboards view:
Dev instance:
Dashboards
└── 📁 grafana-manifests/
├── New Dashboard
└── Test DashboardProd instance:
Dashboards
└── 📁 grafana-manifests/
├── Stable Dashboard
└── Approved Dashboard- Both instances create a folder named “grafana-manifests” (from repository name)
- Each instance only shows dashboards from its configured path (
dev/orprod/) - Dashboards appear with their titles from the JSON files
Configuration parameters
Development:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
dev/
Production:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
prod/
How it works
- Developers create and modify dashboards in development.
- Git Sync commits changes to
dev/. - You review changes in Git.
- You promote approved dashboards from
dev/toprod/. - Production syncs from
prod/. - Production dashboards update.
Alternative: Use branches
Instead of using different paths, you can configure instances to use different branches:
Development instance:
- Repository:
your-org/grafana-manifests - Branch:
develop - Path:
grafana/
Production instance:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
grafana/
With this approach:
- Development changes go to the
developbranch - Use Git merge or pull request workflows to promote changes from
developtomain - Production automatically syncs from the
mainbranch
Alternative: Use separate repositories for stricter isolation
For stricter isolation, use completely separate repositories:
Development instance:
- Repository:
your-org/grafana-manifests-dev - Branch:
main - Path:
grafana/
Production instance:
- Repository:
your-org/grafana-manifests-prod - Branch:
main - Path:
grafana/



