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/
Как это работает
- У каждой команды есть собственный репозиторий Git для полной автономии.
- Каждый ресурс репозитория в Grafana создаёт отдельную папку.
- Дашборды команды платформы синхронизируются из репозитория
your-org/platform-dashboards. - Дашборды команды данных синхронизируются из репозитория
your-org/data-dashboards. - Команды могут независимо управлять настройками своих репозиториев, контролем доступа и рабочими процессами.
- Все команды могут просматривать дашборды друг друга в 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 для совместной работы, используя при этом один общий репозиторий.