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/

Как это работает

  1. Разработчики создают и изменяют дашборды в среде разработки.
  2. Git Sync фиксирует изменения в dev/.
  3. Вы проверяете изменения в Git.
  4. Вы переносите одобренные дашборды из dev/ в prod/.
  5. Production синхронизируется из prod/.
  6. Дашборды в 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/