Настройка мгновенного получения обновлений и предпросмотра дашбордов в Pull Requests
После настройки вы можете при желании расширить Git Sync, включив уведомления о pull request и предпросмотры изображений изменений дашбордов.
Настройка webhooks для уведомлений в реальном времени и интеграции с pull request
Уведомления в реальном времени (или автоматическое получение обновлений) включены и настроены по умолчанию в Grafana Cloud.
В Grafana OSS/Enterprise Git Sync использует webhooks, чтобы получать обновления в реальном времени из публичных репозиториев GitHub или включать интеграции с pull request. Без webhooks интервал опроса задаётся при настройке и по умолчанию составляет 60 секунд. Вы можете настроить webhooks с помощью любого предпочитаемого сервиса или инструмента: Cloudflare Tunnels с доменом под управлением Cloudflare, проброса портов и опций DNS или такого инструмента, как ngrok.
Чтобы настроить webhooks:
- Откройте свой экземпляр Grafana в публичный интернет.
- Используйте проброс портов и DNS,
ngrokили любой другой удобный способ. - Разрешения, заданные в вашем access token GitHub, обеспечивают авторизацию для этой связи.
- Используйте проброс портов и DNS,
- Получив публичный URL, добавьте его в файл конфигурации Grafana:
[server] root_url = https://<PUBLIC_DOMAIN> - Замените
<PUBLIC_DOMAIN>своим публичным доменом.
Чтобы проверить настроенные webhooks, перейдите в Administration > General > Provisioning и нажмите ссылку View для вашего репозитория GitHub.
Ограничения webhooks
Git Sync регистрирует собственные webhooks для каждого подключения к репозиторию, поэтому когда несколько экземпляров Grafana синхронизируют один и тот же репозиторий, каждое подключение увеличивает этот общий счётчик. Поскольку Git-провайдеры ограничивают количество webhooks, которые можно задать для каждого репозитория, при превышении лимита ваш Git-провайдер отклоняет новые webhooks.
Например, в GitHub вы можете получить такую ошибку:
GitHub API error (HTTP 422: Validation Failed: The "pull_request" event cannot have more than 20 hooks; The "push" event cannot have more than 20 hooks)
Если вы достигли этого лимита, вы можете либо:
- Удалить неиспользуемые или дублирующиеся webhooks на странице Settings > Webhooks вашего репозитория.
- Отключить интеграцию с webhooks для подключений, которым не нужна синхронизация в реальном времени, чтобы такие экземпляры работали по интервалу опроса. Инструкции по отключению интеграции с webhooks см. в разделе Опции webhooks.
Ограничения webhooks по провайдерам
Действуют следующие ограничения:
- GitHub ограничивает каждый репозиторий 20 webhooks на тип события, например
pushиpull_request. Подробнее см. в официальной документации GitHub по webhooks. - GitLab по умолчанию допускает 100 webhooks для каждого проекта и 50 для каждой группы, хотя webhooks подгрупп не учитываются в лимитах родительской группы. Подробнее см. в разделе Настройки GitLab.
- BitBucket ограничивает 50 webhooks на репозиторий. Подробнее см. в документации BitBucket по webhooks.
Настройка публично доступного URL
Если вам нужно направить [server] root_url на внутренний адрес (например, когда Grafana работает за приватным ingress в кластере Kubernetes), задайте публично доступный URL через [provisioning] public_root_url. Этот URL используется как для регистрации обратных вызовов webhook в Git-провайдере, так и в качестве базы для изображений-скриншотов, встроенных в комментарии к pull request, которые серверы Git-провайдера загружают из публичного интернета.
[server]
root_url = http://internal.cluster.local
[provisioning]
public_root_url = https://<PUBLIC_DOMAIN>
Поле spec.webhook.baseUrl для отдельного репозитория всё ещё переопределяет public_root_url при регистрации webhook, а URL скриншотов всегда используют public_root_url (или root_url, если он не задан).
Открытие только необходимых путей
Если ваши настройки безопасности не допускают публичного открытия экземпляра Grafana, вы можете либо добавить IP-адреса Git-провайдера в список разрешённых, либо открыть только необходимые пути.
Информацию о трафике между Grafana и вашим Git-сервером см. в разделе Сетевое подключение и списки разрешённых IP-адресов.
В RegExp необходимые для открытия пути — /apis/provisioning\.grafana\.app/v0(alpha1)?/namespaces/[^/]+/repositories/[^/]+/(webhook|render/.*)$.
Настройка рендеринга изображений для предпросмотра дашбордов
Caution
Доступно только в Grafana OSS и Grafana Enterprise.
Чтобы настроить рендеринг изображений для добавления визуальных предпросмотров обновлений дашбордов прямо в pull request, установите Grafana Image Renderer в ваш экземпляр Grafana. Подробности и инструкции по установке см. в разделе Служба Image Renderer.
Для рендеринга изображений требуются webhooks.
Дальнейшие шаги
Чтобы узнать больше об использовании Git Sync, обратитесь к следующим документам: