Menu
Git Sync для сред разработки и промышленной эксплуатации
Используйте отдельные экземпляры Grafana для разработки и промышленной эксплуатации. Каждый из них синхронизируется с разными расположениями в Git, что позволяет тестировать дашборды до вывода в production.
Когда использовать
- Поэтапное развёртывание: вам нужно протестировать изменения дашбордов перед выводом в production.
- Контроль изменений: вам требуются согласования, прежде чем дашборды попадут в production.
- Обеспечение качества: вы проверяете работоспособность дашбордов в среде, отличной от production.
- Снижение рисков: вы минимизируете риск нарушить работу production-дашбордов.
Архитектура
┌────────────────────────────────────────────────────────────┐
│ 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"│
└─────────────────────┘ └─────────────────────┘
Структура репозитория
В Git:
your-org/grafana-manifests
├── dev/
│ ├── dashboard-new.json
│ └── dashboard-test.json
└── prod/
├── dashboard-stable.json
└── dashboard-approved.json
В представлении Dashboards в Grafana:
Экземпляр dev:
Dashboards
└── 📁 grafana-manifests/
├── New Dashboard
└── Test Dashboard
Экземпляр prod:
Dashboards
└── 📁 grafana-manifests/
├── Stable Dashboard
└── Approved Dashboard
- Оба экземпляра создают папку с именем «grafana-manifests» (по имени репозитория)
- Каждый экземпляр показывает только дашборды из настроенного для него пути (
dev/илиprod/) - Дашборды отображаются с заголовками из JSON-файлов
Параметры конфигурации
Development:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
dev/
Production:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
prod/
Как это работает
- Разработчики создают и изменяют дашборды в среде разработки.
- Git Sync фиксирует изменения в
dev/. - Вы проверяете изменения в Git.
- Вы переносите одобренные дашборды из
dev/вprod/. - Production синхронизируется из
prod/. - Дашборды в production обновляются.
Альтернатива: использование веток
Вместо разных путей можно настроить экземпляры на использование разных веток:
Экземпляр разработки:
- Repository:
your-org/grafana-manifests - Branch:
develop - Path:
grafana/
Экземпляр production:
- Repository:
your-org/grafana-manifests - Branch:
main - Path:
grafana/
При таком подходе:
- Изменения в среде разработки попадают в ветку
develop - Для переноса изменений из
developвmainиспользуйте слияние Git или рабочий процесс с pull request - Production автоматически синхронизируется из ветки
main
Альтернатива: отдельные репозитории для более строгой изоляции
Для более строгой изоляции используйте полностью отдельные репозитории:
Экземпляр разработки:
- Repository:
your-org/grafana-manifests-dev - Branch:
main - Path:
grafana/
Экземпляр production:
- Repository:
your-org/grafana-manifests-prod - Branch:
main - Path:
grafana/