Menu
Choose a product
Scroll for more
Documentation
Grafana Cloud
As code
Observability as code
Git Sync
Deployment scenarios
Across environments
Grafana Cloud
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/
Was this page helpful?
Related resources from Grafana Labs
Additional helpful documentation, links, and articles:
Video

Getting started with managing your metrics, logs, and traces using Grafana
In this webinar, we’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics.
Video

Intro to Kubernetes monitoring in Grafana Cloud
In this webinar you’ll learn how Grafana offers developers and SREs a simple and quick-to-value solution for monitoring their Kubernetes infrastructure.
Video

Building advanced Grafana dashboards
In this webinar, we’ll demo how to build and format Grafana dashboards.