Git Sync с региональной репликацией

Разверните несколько экземпляров Grafana в разных регионах. Синхронизируйте их с одним и тем же расположением в Git, чтобы обеспечить одинаковые дашборды везде.

Когда использовать

  • Географическое распределение: вы разворачиваете Grafana ближе к пользователям в разных регионах.
  • Снижение задержки: пользователям нужен быстрый доступ к дашбордам из их региона.
  • Суверенитет данных: вы храните данные дашбордов в определённых регионах.
  • Высокая доступность: вам нужна доступность дашбордов в разных регионах.
  • Единообразный опыт: все пользователи видят одни и те же дашборды независимо от региона.

Архитектура

┌─────────────────────────────────────────────────────┐
│           GitHub Repository                         │
│   Repository: your-org/grafana-manifests          │
│   Branch: main                                      │
│                                                     │
│   grafana-manifests/                              │
│   └── shared/                                      │
│       ├── dashboard-global.json                    │
│       ├── dashboard-metrics.json                   │
│       └── dashboard-logs.json                      │
└─────────────────────────────────────────────────────┘
              ↕                           ↕
       Git Sync (shared/)         Git Sync (shared/)
              ↕                           ↕
┌────────────────────┐          ┌────────────────────┐
│  US Region         │          │  EU Region         │
│  Grafana           │          │  Grafana           │
│                    │          │                    │
│  Repository:       │          │  Repository:       │
│  - path: shared/   │          │  - path: shared/   │
└────────────────────┘          └────────────────────┘

Структура репозитория

В Git:

your-org/grafana-manifests
└── shared/
    ├── dashboard-global.json
    ├── dashboard-metrics.json
    └── dashboard-logs.json

В представлении Dashboards в Grafana (все регионы):

Dashboards
└── 📁 grafana-manifests/
    ├── Global Dashboard
    ├── Metrics Dashboard
    └── Logs Dashboard
  • Все региональные экземпляры (US, EU и т. д.) показывают идентичную структуру папок
  • Одинаковое имя папки «grafana-manifests» в каждом регионе
  • Одни и те же дашборды, синхронизированные из пути shared/, отображаются везде
  • Пользователи в любом регионе видят абсолютно одинаковые дашборды с одинаковыми заголовками

Параметры конфигурации

Все регионы:

  • Repository: your-org/grafana-manifests
  • Branch: main
  • Path: shared/

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

  1. Все региональные экземпляры подтягивают дашборды из shared/.
  2. Изменения из любого региона фиксируются в Git.
  3. Другие регионы подтягивают обновления во время следующей синхронизации (или через вебхуки).
  4. Изменения распространяются по регионам в соответствии с интервалом синхронизации.

Особенности

  • Конфликты записи: если пользователи в разных регионах одновременно изменяют один и тот же дашборд, Git применяет правило «побеждает последняя запись».
  • Основной регион: рассмотрите возможность назначить один регион основным местом для внесения изменений в дашборды.
  • Время распространения: изменения распространяются на все регионы в течение настроенного интервала синхронизации или мгновенно, если настроены вебхуки.
  • Надёжность сети: убедитесь, что все регионы имеют надёжное подключение к репозиторию Git.