Документацияbreadcrumb arrow Grafanabreadcrumb arrow Документация GlaberGraphbreadcrumb arrow Как кодbreadcrumb arrow Наблюдаемость как кодbreadcrumb arrow Синхронизация Gitbreadcrumb arrow Настройка Git Syncbreadcrumb arrow Настройка мгновенного получения обновлений и предпросмотра дашбордов в Pull Requests

Настройка мгновенного получения обновлений и предпросмотра дашбордов в Pull Requests

После настройки вы можете при желании расширить Git Sync, включив уведомления о pull request и предпросмотры изображений изменений дашбордов.

Возможность Преимущество Требуется
Таблица со сводкой изменений в вашем pull request Удобный способ сохранить изменения обратно в GitHub Настроенные webhooks
Изображение предпросмотра дашборда в PR Снимок изменений дашборда в pull request за пределами Grafana Image renderer и настроенные webhooks

Настройка webhooks для уведомлений в реальном времени и интеграции с pull request

Уведомления в реальном времени (или автоматическое получение обновлений) включены и настроены по умолчанию в Grafana Cloud.

В Grafana OSS/Enterprise Git Sync использует webhooks, чтобы получать обновления в реальном времени из публичных репозиториев GitHub или включать интеграции с pull request. Без webhooks интервал опроса задаётся при настройке и по умолчанию составляет 60 секунд. Вы можете настроить webhooks с помощью любого предпочитаемого сервиса или инструмента: Cloudflare Tunnels с доменом под управлением Cloudflare, проброса портов и опций DNS или такого инструмента, как ngrok.

Чтобы настроить webhooks:

  1. Откройте свой экземпляр Grafana в публичный интернет.
    • Используйте проброс портов и DNS, ngrok или любой другой удобный способ.
    • Разрешения, заданные в вашем access token GitHub, обеспечивают авторизацию для этой связи.
  2. Получив публичный URL, добавьте его в файл конфигурации Grafana:
    ini
    [server]
    root_url = https://<PUBLIC_DOMAIN>
  3. Замените <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-провайдера загружают из публичного интернета.

ini
[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, обратитесь к следующим документам: