Ограничения использования и производительности
Note
Функциональность Git Sync постоянно развивается. Свяжитесь с Grafana, чтобы получить поддержку, сообщить о возникших проблемах и помочь нам улучшить эту функцию.
Соображения о производительности
Когда Git Sync включён, нагрузка на базу данных может возрасти, особенно если в вашем экземпляре Grafana много папок и вложенных папок. Оцените влияние на производительность, если таковое имеется, в среде, отличную от продуктивной.
Уровни использования и ограничения
Применяются следующие ограничения Git Sync по уровням:
Note
В Grafana Cloud ограничения по уровням нельзя изменить из конфигурации. Обратитесь в службу поддержки, если вам нужен более высокий лимит подключений, или вместо этого разделите по ёмкости вместо использования одного подключения на команду или микросервис.
В самостоятельно управляемой Grafana (OSS или Enterprise) указанное в таблице количество репозиториев 10 — это значение по умолчанию, а не жёсткий предел. Увеличьте или снимите его с помощью
[provisioning] max_repositoriesв файле конфигурации Grafana. Количество ресурсов на репозиторий в On-prem по умолчанию остаётся неограниченным (max_resources_per_repository = 0), и при желании вы можете задать ограничение.Дополнительные сведения см. в разделе Изменение ваших ограничений использования.
Рекомендуемые ограничения
В Grafana Cloud лимит подключений к репозиториям является лимитом на стек. В самостоятельно управляемой Grafana фактическим лимитом является то значение, которое вы задали для max_repositories (по умолчанию 10).
На сегодняшний день не синхронизируйте более 1 000 ресурсов на одно подключение к репозиторию. Это не произвольное ограничение: при количестве ресурсов на подключение свыше примерно 1 000 процесс синхронизации создаёт заметную нагрузку на саму Grafana, что может привести к замедлению синхронизации и повышенной нагрузке на базу данных.
Оба этих лимита являются предварительными значениями. По мере развития Git Sync эти ограничения вырастут на порядки. Цель — чтобы Git Sync поддерживал около 100 подключений к репозиториям на стек и в долгосрочной перспективе до примерно 1 000, с аналогичным увеличением количества ресурсов, которые можно синхронизировать на одно подключение.
Если эти ограничения влияют на ваше использование Git Sync, свяжитесь с нами и опишите свою ситуацию. Вы также можете поделиться любыми идеями или предложениями.
Подробности об ограничениях использования и хранения см. в разделе Ограничения дашбордов и папок.
Изменение ваших ограничений использования
Перед изменением ограничений использования изучите свой конкретный сценарий. Тщательно спроектируйте структуру репозиториев и определите, сколько репозиториев и ресурсов вы можете поддерживать. Например, установка более 1 000 ресурсов на репозиторий может повлиять на производительность вашей системы.
Во многих случаях разделение одного репозитория между несколькими подключениями, как описано в разделе Масштабирование за пределы 1 000 ресурсов на репозиторий, является лучшим вариантом, чем повышение лимитов.
Grafana Cloud
В Grafana Cloud лимиты применяются по уровням и не могут быть изменены из конфигурации. Лимит в 10 подключений можно немного увеличить по запросу, но разделение одного репозитория между несколькими подключениями — рекомендуемый способ синхронизировать больше ресурсов без изменения лимитов уровня.
Увеличение лимитов не предоставляется автоматически. Когда вы запрашиваете его, служба поддержки попросит вас описать ваш сценарий, чтобы понять, почему текущих лимитов недостаточно, и оценить, необходимо ли и безопасно ли такое увеличение для производительности вашего стека.
Grafana OSS/Enterprise
В Grafana On-prem (OSS или Enterprise) указанное в таблице значение 10 репозиториев — это лишь значение по умолчанию, а не жёсткий предел. Количество ресурсов на репозиторий по умолчанию остаётся неограниченным. Значение в 1 000 ресурсов на подключение — это рекомендация по производительности, а не ограничение по умолчанию для On-prem.
Если вы пользователь On-prem, вы можете изменить лимиты напрямую с помощью параметров конфигурации, как описано ниже.
Чтобы настроить лимиты, используйте один из следующих параметров конфигурации:
- Используйте
max_repositories, чтобы задать, сколько репозиториев вы можете синхронизировать. Значение по умолчанию —10. Установите0для неограниченного количества репозиториев. Дополнительные сведения см. в разделеmax_repositoriesв разделе «Настройка Grafana». - Используйте
max_resources_per_repository, чтобы задать количество ресурсов на репозиторий для синхронизации. Значение по умолчанию —0(без ограничений). Дополнительные сведения см. в разделеmax_resources_per_repositoryв разделе «Настройка Grafana».
Масштабирование за пределы 1 000 ресурсов на репозиторий
Если один репозиторий содержит более 1 000 ресурсов, вам не обязательно повышать лимит на репозиторий. Вместо этого подключите один и тот же репозиторий несколько раз, при этом каждое подключение указывает на другую папку (путь) в репозитории. Каждое подключение синхронизирует собственное подмножество ресурсов и независимо учитывается в рекомендации в 1 000 ресурсов.
Поскольку стек допускает до 10 подключений к репозиториям, это позволяет синхронизировать до примерно 10 000 ресурсов из одного репозитория, сохраняя каждое подключение в рекомендуемом диапазоне.
Когда вы разделяете один репозиторий между несколькими подключениями, используйте синхронизацию без папки для каждого подключения. При синхронизации с папкой (по умолчанию) каждое подключение создаёт собственную обёрточную папку с именем репозитория, поэтому разделение репозитория изменило бы иерархию ваших папок и вложило бы ресурсы на один уровень глубже. Синхронизация без папки размещает ресурсы каждого подключения на верхнем уровне, поэтому разделение никак не влияет на то, как ваши дашборды и папки организованы в Grafana.
Если вам нужно больше, лимит в 10 подключений можно немного увеличить для стеков Cloud по запросу. Обратитесь в службу поддержки, чтобы обсудить ваш сценарий.
В Grafana Cloud синхронизация такого количества ресурсов может также превысить максимальное число дашбордов в вашем стеке. Если это произойдёт, вам также потребуется увеличить этот лимит. Обратитесь к разделу Ограничения дашбордов и папок, чтобы просмотреть и скорректировать ограничения дашбордов.
Разделение по ёмкости, а не по команде
Когда у вас много команд или арендаторов, возникает соблазн создать по одному подключению на команду, чтобы каждая команда соответствовала своему подключению. Избегайте этого: это быстро расходует подключения, не масштабируется по мере роста числа команд, и в Grafana Cloud одному стеку нельзя предоставить те сотни подключений, которые для этого потребовались бы.
Вместо этого разделяйте по ёмкости. Создайте один репозиторий и сгруппируйте команды в небольшое количество папок-сегментов (шардов), каждая из которых содержит до примерно 1 000 ресурсов, и подключите каждую папку-сегмент отдельно. Например, заказчик с 190 командами и 900 ресурсами сегодня комфортно умещается в одном сегменте:
your-org/grafana-manifests/
├── shard-1/ ← ~900 resources today, connected now
│ ├── team-a/
│ ├── team-b/
│ └── ...
├── shard-2/ ← empty for now, add a connection when shard-1 approaches 1,000
├── shard-3/ ← add later as you keep growing
└── shard-4/ ← ...up to 10 shards / connections per stack
По мере роста числа ресурсов добавляйте shard-2, shard-3 и последующие сегменты и подключайте каждый из них. Вы можете в любое время перемещать команды между сегментами, чтобы сбалансировать нагрузку, поэтому вы платите только за те подключения, которые действительно нужны, и можете расти до лимита в 10 подключений без реструктуризации вашего репозитория.
Если разделение на сегменты нецелесообразно для вашей конфигурации, попробуйте умеренно повысить лимит ресурсов на подключение, например с 1 000 до значения в диапазоне 1 200–1 500. Это небольшое изменение для получения небольшого запаса, а не увеличение на порядок. Тем не менее не выходите за пределы 1 500 ресурсов на подключение из-за влияния на производительность Grafana. Для существенно больших масштабов разделение на сегменты остаётся рекомендуемым подходом.
Git Sync в нескольких организациях
Git Sync работает в нескольких организациях для самостоятельно управляемых экземпляров Grafana. Вы можете настроить Git Sync независимо в каждой из своих организаций, и то, что вы синхронизируете в одной организации, не влияет на другую. Команды, которые используют один экземпляр Grafana в разных организациях, могут каждая управлять своим собственным выделением ресурсов из Git.
Эта функция доступна начиная с Grafana 13.0.4, но не поддерживается до Grafana 13.1.1.
Совместимые Git-провайдеры
Git Sync доступен для любого Git-провайдера через тип репозитория Pure Git и имеет специальные расширенные интеграции для GitHub, GitLab и Bitbucket.
Учтите, что Pure Git, GitLab и Bitbucket поддерживаются только в Grafana v12.4.x или более поздней версии. Обратитесь к разделу Включение Git-провайдеров, чтобы настроить их.
Чтобы узнать больше о Git, обратитесь к разделу Getting Started — About Version Control книги Pro Git в официальной документации Git.
Тип репозитория Pure Git
Тип репозитория Pure Git использует протокол Smart HTTP v2 (Git поверх HTTPS) без логики, специфичной для конкретного провайдера. Pure Git обеспечивает основной рабочий процесс Git Sync: ваш репозиторий является источником истины, вы можете редактировать дашборды в интерфейсе, а Grafana остаётся синхронизированной.
Note
Pure Git поддерживает только протокол Smart HTTP v2. Более ранние версии протокола (v1, v0) и транспорт SSH не поддерживаются.
Убедитесь, что ваш Git-сервер поддерживает протокол v2 поверх HTTPS. Некоторые провайдеры, например Azure DevOps, используют только v1 и поэтому несовместимы с Git Sync.
Однако Pure Git не включает функций, требующих API провайдера, таких как мгновенная синхронизация на основе вебхуков, автоматические комментарии к PR или глубокие ссылки на исходные файлы.
Расширенные интеграции: GitHub, GitHub Enterprise, GitLab, Bitbucket
Если ваш Git-провайдер — это GitHub, GitHub Enterprise (Server и Cloud), GitLab или Bitbucket, используйте расширенную интеграцию. Расширенные интеграции понимают используемую вами платформу, что позволяет создавать рабочие процессы, ощущающиеся как нативные: автоматические комментарии к pull request с превью дашбордов, мгновенная синхронизация на основе вебхуков или прямой переход из Grafana к исходным файлам в интерфейсе вашего провайдера.
Расширенная интеграция с GitHub на сегодняшний день является наиболее полнофункциональной. Она доступна в Grafana OSS, Enterprise и Cloud и обеспечивает более богатые рабочие процессы с pull request, более глубокую связь между Grafana и GitHub и более тесную интеграцию в процессы проверки.
Интеграции с GitLab и Bitbucket доступны только в Grafana Enterprise и Grafana Cloud. Хотя на данный момент они менее развиты, ожидайте продолжения улучшений в области рабочих процессов с pull request, связывания и поведения синхронизации.
Поддержка ресурсов и совместимость
Git Sync поддерживает только дашборды и папки. Оповещения, источники данных, панели и другие ресурсы пока не поддерживаются.
Если вы пользователь Grafana Cloud, вы можете проверить портал дорожной карты Grafana, чтобы узнать о будущих улучшениях.
Совместимость ресурсов
Если вы используете Git Sync в Grafana OSS или Grafana Enterprise, некоторые поддерживаемые ресурсы могут иметь несовместимый формат данных. Если это произойдёт, синхронизация будет заблокирована. Проблемы совместимости будут устранены с помощью предстоящего инструмента миграции.
Ресурс может быть:
Вложенные папки
Git Sync поддерживает до четырёх вложенных папок внутри репозитория.
Известные ограничения
Миграция в Git Sync
Полная синхронизация экземпляра является экспериментальной.
При миграции ресурсов в Git Sync вы по-прежнему можете создавать, редактировать или удалять ресурсы, но изменения могут не экспортироваться. Длительность этого процесса зависит от количества задействованных ресурсов.
Использование существующих ресурсов
Чтобы добавить существующие ресурсы как выделенные ресурсы Git Sync, вы можете использовать инструмент Import dashboards, сохранить их из интерфейса, сохранить их как JSON-файлы и зафиксировать в синхронизируемом репозитории или использовать gcx. Дополнительные сведения см. в разделе
Экспорт невыделенных ресурсов из Grafana. При миграции существующих дашбордов структура папок будет воспроизведена в выделенном репозитории.
Caution
Git Sync не может принять на себя управление ресурсом, пока в Grafana существует неуправляемый ресурс с тем же UID, поэтому вам может потребоваться вручную удалить исходные ресурсы, чтобы обеспечить переход к выделенным ресурсам. Поскольку удаление ресурсов подразумевает определённые операционные оговорки, обратитесь к разделу Как удалить существующие ресурсы в Grafana для получения дополнительной информации.
Восстановление ресурсов
Восстановление ресурсов из интерфейса в настоящее время невозможно. В качестве альтернативы вы можете восстановить дашборды напрямую в вашем репозитории GitHub, создав PR, и они будут обновлены в Grafana.