Git Sync в экземпляре Grafana, используемом несколькими командами

Используйте один экземпляр Grafana с несколькими ресурсами Repository — по одному на команду. Каждая команда управляет своими дашбордами, используя общую Grafana.

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

  • Автономия команд: разные команды независимо управляют своими дашбордами.
  • Организационная структура: организация дашбордов соответствует структуре команд.
  • Эффективность ресурсов: несколько команд совместно используют инфраструктуру Grafana.
  • Оптимизация затрат: вы снижаете затраты на инфраструктуру, сохраняя разделение между командами.
  • Совместная работа: команды могут просматривать дашборды друг друга, управляя при этом только своими.

Архитектура

┌─────────────────────────┐  ┌─────────────────────────┐
│  Platform Team Repo     │  │  Data Team Repo         │
│  platform-dashboards    │  │  data-dashboards        │
│                         │  │                         │
│  platform-dashboards/   │  │  data-dashboards/       │
│  └── grafana/           │  │  └── grafana/           │
│      ├── k8s.json       │  │      ├── pipeline.json  │
│      └── infra.json     │  │      └── analytics.json │
└─────────────────────────┘  └─────────────────────────┘
           ↕                            ↕
    Git Sync (grafana/)          Git Sync (grafana/)
           ↕                            ↕
        ┌──────────────────────────────────────┐
        │       Grafana Instance               │
        │                                      │
        │  Repository 1:                       │
        │  - repo: platform-dashboards         │
        │  → Creates "platform-dashboards"     │
        │                                      │
        │  Repository 2:                       │
        │  - repo: data-dashboards             │
        │  → Creates "data-dashboards"         │
        └──────────────────────────────────────┘

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

В Git (отдельные репозитории):

Репозиторий команды платформы:

your-org/platform-dashboards
└── grafana/
    ├── dashboard-k8s.json
    └── dashboard-infra.json

Репозиторий команды данных:

your-org/data-dashboards
└── grafana/
    ├── dashboard-pipeline.json
    └── dashboard-analytics.json

В представлении Dashboards в Grafana:

Dashboards
├── 📁 platform-dashboards/
│   ├── Kubernetes Dashboard
│   └── Infrastructure Dashboard
└── 📁 data-dashboards/
    ├── Pipeline Dashboard
    └── Analytics Dashboard
  • Создаются две отдельные папки (по одной на каждый ресурс Repository).
  • Имена папок образуются из имён репозиториев.
  • Каждая команда полностью контролирует свой репозиторий.
  • Команды могут независимо управлять правами доступа, ветками и рабочими процессами в своих репозиториях.
  • Все команды могут просматривать дашборды друг друга в Grafana, но управляют только своими.

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

Репозиторий команды платформы:

  • Repository: your-org/platform-dashboards
  • Branch: main
  • Path: grafana/

Репозиторий команды данных:

  • Repository: your-org/data-dashboards
  • Branch: main
  • Path: grafana/

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

  1. У каждой команды есть собственный репозиторий Git для полной автономии.
  2. Каждый ресурс репозитория в Grafana создаёт отдельную папку.
  3. Дашборды команды платформы синхронизируются из репозитория your-org/platform-dashboards.
  4. Дашборды команды данных синхронизируются из репозитория your-org/data-dashboards.
  5. Команды могут независимо управлять настройками своих репозиториев, контролем доступа и рабочими процессами.
  6. Все команды могут просматривать дашборды друг друга в Grafana, но редактируют только свои.

Масштабирование на большее число команд

Добавление новых команд не вызывает сложностей. Для третьей команды создайте новый репозиторий и настройте:

  • Repository: your-org/security-dashboards
  • Branch: main
  • Path: grafana/

Это создаст новую папку «security-dashboards» в том же экземпляре Grafana.

Альтернатива: общий репозиторий с разными путями

Для команд, предпочитающих использовать один общий репозиторий, применяйте разные пути для разделения дашбордов команд:

В Git:

your-org/grafana-manifests
├── team-platform/
│   ├── dashboard-k8s.json
│   └── dashboard-infra.json
└── team-data/
    ├── dashboard-pipeline.json
    └── dashboard-analytics.json

Конфигурация:

Команда платформы:

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

Команда данных:

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

Этот подход обеспечивает более простое управление репозиторием, но меньшую изоляцию между командами.

Альтернатива: отдельные ветки для каждой команды

Для команд, которым нужна собственная ветка в общем репозитории:

Команда платформы:

  • Repository: your-org/grafana-manifests
  • Branch: team-platform
  • Path: grafana/

Команда данных:

  • Repository: your-org/grafana-manifests
  • Branch: team-data
  • Path: grafana/

Это позволяет командам использовать рабочие процессы с ветками Git для совместной работы, используя при этом один общий репозиторий.