Переход с Grafana OSS/Enterprise на Grafana Cloud вручную

Это руководство по миграции предназначено для того, чтобы помочь пользователям Grafana OSS/Enterprise без лишних усилий вручную перейти на Grafana Cloud.

Note

На данный момент не существует стандартного способа импорта существующих данных в Grafana Cloud из самостоятельно управляемых баз данных.

Tip

Вы можете использовать Grafana Cloud Migration Assistant, общедоступный в Grafana v12, для автоматического переноса ресурсов в Grafana Cloud.

Планирование и выполнение ручной миграции

Если вам нужно перенести ресурсы сверх того, что поддерживает Grafana Cloud Migration Assistant, вы можете сделать это вручную с помощью данного руководства. Ручной перевод вашей команды с Grafana OSS/Enterprise на Grafana Cloud требует некоторой координации и коммуникации в дополнение к технической миграции, описанной в следующих разделах.

Если вы являетесь действующим клиентом Grafana OSS/Enterprise, свяжитесь со своей командой по работе с клиентами в Grafana Labs, чтобы спланировать переходный период, организовать лицензии и узнать, сколько стоит подписка Grafana Cloud по сравнению с Grafana OSS/Enterprise. Команда по работе с клиентами также может дать конкретные рекомендации и организовать профессиональные услуги для помощи в миграции при необходимости.

Ознакомьтесь с политиками безопасности и соответствия требованиям Grafana Cloud в Grafana Labs Trust Center.

Возможно, вы захотите протестировать Grafana Cloud в течение некоторого времени, прежде чем переносить всю организацию. Для этого создайте «тестовый» стек в Cloud и сначала перенесите ресурсы туда. Если вы используете Grafana Alerting, обязательно настройте другую точку контакта, чтобы алерты не срабатывали дважды.

Когда вы решите выполнить миграцию, выделите день переключения, в течение которого пользователи не должны создавать новые дашборды или алерты. Перенесите все недавно созданные ресурсы, включите ваши продуктивные точки контакта и политики уведомлений алертинга в Cloud и отключите их в Grafana OSS/Enterprise, затем уведомите пользователей. Вы также можете перенаправить URL-адрес Grafana OSS/Enterprise на ваш URL-адрес Grafana Cloud.

Компонент Трудоёмкость миграции Примечания
Папки Низкая
Дашборды Низкая Ссылки на источники данных, возможно, потребуется переименовать
Алерты Средняя Алерты на основе источников данных, возможно, потребуется адаптировать
Плагины Средняя Зависит от набора возможностей плагина
Источники данных Высокая Если источники данных ссылаются на какие-либо секреты, их нужно передать заново

Прежде чем начать

Убедитесь, что у вас есть следующее:

  • Grafana Cloud Stack и доступ к машине с Linux (или работающая установка WSL2) для запуска фрагментов кода из этого руководства.
  • Доступ администратора к стеку Grafana Cloud. Чтобы проверить свой уровень доступа, перейдите по адресу https://grafana.com/orgs/<your-org-name>/members
  • Доступ администратора к вашему существующему экземпляру Grafana OSS/Enterprise. Чтобы проверить свой уровень доступа, перейдите по адресу https://<grafana-onprem-url>/admin/users
  • Доступ к учётным данным, используемым для подключения к вашим источникам данных. Например, ключи API или имена пользователей и пароли. Поскольку эта информация зашифрована, её нельзя скопировать с одного экземпляра на другой.
  • Если некоторые из ваших источников данных доступны только изнутри вашей сети, обратитесь к требованиям для Private Data Source Connect
  • Только для плагинов, отчётов и плейлистов: инструменты командной строки curl и jq

Обновление Grafana OSS/Enterprise до последней версии

Стеки Grafana Cloud обычно работают на последней версии Grafana. Чтобы избежать проблем во время миграции, обновите Grafana, следуя нашим руководствам здесь.

Перенос ресурсов Grafana

В этом руководстве термин «ресурсы» относится к объектам, которые вы создаёте в Grafana, таким как дашборды, папки, алерты, источники данных и разрешения.

Процесс миграции работает следующим образом: существующие ресурсы (например, дашборды и папки) извлекаются из старого экземпляра Grafana, при необходимости изменяются, а затем отправляются в новый экземпляр Grafana Cloud.

Во всех фрагментах кода в этом руководстве по миграции необходимо заменить определённые заполнители на ваши фактические учётные данные и URL-адреса экземпляров. Выполните следующие замены перед запуском скриптов:

  • $GRAFANA_SOURCE_TOKEN — токен доступа вашего экземпляра Grafana OSS/Enterprise.
  • $GRAFANA_DEST_TOKEN — токен доступа вашего экземпляра Grafana Cloud.
  • $GRAFANA_ONPREM_INSTANCE_URL — URL-адрес вашего экземпляра Grafana OSS/Enterprise. Например: https://grafana.mydomain.com
  • $GRAFANA_CLOUD_INSTANCE_URL — URL-адрес вашего экземпляра Grafana Cloud. Например: https://myorganization.grafana.net

Перенос плагинов Grafana

Миграция плагинов — это первый шаг при переходе с Grafana OSS/Enterprise на Grafana Cloud, поскольку плагины являются неотъемлемыми компонентами, влияющими на функциональность и отображение других ресурсов Grafana, таких как дашборды.

  1. Чтобы получить список плагинов, установленных в вашем экземпляре Grafana OSS/Enterprise, отправьте HTTP GET-запрос к эндпоинту /api/plugins. Используйте следующую команду оболочки:

    shell
    response=$(curl -s -H "Accept: application/json" -H "Authorization: Bearer $GRAFANA_SOURCE_TOKEN" "${GRAFANA_ONPREM_INSTANCE_URL}/api/plugins")
    
    plugins=$(echo $response | jq '[.[] | select(.signatureType == "community" or (.signatureType != "internal" and .signatureType != "")) | {name: .id, version: .info.version}]')
    
    echo "$plugins" > plugins.json

    Приведённая выше команда выполнит HTTP-запрос к этому эндпоинту и решит несколько задач:

    • Отправит GET-запрос к эндпоинту /api/plugins вашего экземпляра Grafana OSS/Enterprise, чтобы получить список установленных плагинов.
    • Отфильтрует список, оставив только плагины сообщества и плагины, подписанные сторонними организациями.
    • Извлечёт идентификатор и версию плагина, а затем сохранит их в файле plugins.json.
  2. Чтобы импортировать плагины в ваш экземпляр Grafana Cloud, выполните следующую команду. Эта команда формирует HTTP POST-запрос к https://grafana.com/api/instances/<stack_slug>/plugins

    shell
    CLOUD_INSTANCE=$GRAFANA_CLOUD_INSTANCE_URL
    
    stack_slug="${CLOUD_INSTANCE#*//}"
    stack_slug="${stack_slug%%.*}"
    jq -c '.[]' plugins.json | while IFS= read -r plugin; do
      name=$(echo "$plugin" | jq -r '.name')
      version=$(echo "$plugin" | jq -r '.version')
      echo "Adding plugin $name with version $version to stack $stack_slug"
      response=$(curl -s -X POST "https://grafana.com/api/instances/$stack_slug/plugins" \
                -H "Authorization: Bearer <GRAFANA_CLOUD_ACCESS_TOKEN>" \
                -H "Content-Type: application/json" \
                -d "{\"plugin\": \"$name\", \"version\": \"$version\"}")
      echo "POST response for plugin $name version $version: $response"
    done

    Замените <GRAFANA_CLOUD_ACCESS_TOKEN> на ваш токен политики доступа Grafana Cloud. Чтобы создать новый, обратитесь к документации по политикам доступа Grafana Cloud.

    Этот скрипт перебирает каждый плагин, указанный в файле plugins.json:

    • Формирует POST-запрос для каждого плагина, чтобы добавить его в указанный экземпляр Grafana Cloud.
    • Возвращает ответ для каждого POST-запроса, чтобы подтвердить результат или сообщить о возникших проблемах.

Перенос ресурсов, уже настроенных как код

Если вы уже используете такие инструменты, как Terraform, Ansible или HTTP API Grafana, для провижининга ресурсов в Grafana, перенаправьте их на новый экземпляр Grafana Cloud, заменив URL-адрес Grafana и учётные данные.

Перенос дашбордов, папок, источников данных, библиотечных панелей и правил алертинга с помощью Grizzly

Grizzly — это инструмент командной строки, упрощающий работу с ресурсами Grafana. Используйте его для переноса большей части содержимого вашего экземпляра Grafana. Выполните следующие шаги в терминале, чтобы установить Grizzly. Если вам нужно изменить операционную систему или архитектуру, обратитесь к разделу релизов Grizzly и используйте подходящий для ваших нужд бинарный файл.

shell
# download the binary (adapt os and arch as needed)
$ curl -fSL -o "/usr/local/bin/grr" "https://github.com/grafana/grizzly/releases/download/v0.3.1/grr-linux-amd64"

# make it executable
$ chmod a+x "/usr/local/bin/grr"

# have fun :)
$ grr --help

Сначала создайте новую папку на своём компьютере и перейдите в неё, чтобы упорядочить работу.

shell
mkdir grafana-migration
cd grafana-migration

Чтобы предоставить grizzly доступ к вашему экземпляру Grafana OSS/Enterprise и экземпляру Grafana Cloud, вам нужно создать сервисную учётную запись и соответствующий токен доступа на каждом экземпляре. Эти токены можно использовать для аутентификации запросов на извлечение и отправку ресурсов. Выполните следующие шаги в вашем экземпляре Grafana OSS/Enterprise:

  • Перейдите на страницу Administration -> Users and access -> Service Accounts в экземпляре Grafana OSS/Enterprise.
  • Нажмите Add Service Account
  • Дайте сервисной учётной записи описательное имя, например «grizzly-migration», и назначьте роль Admin.
  • После создания учётной записи нажмите Add Service Account Token
  • Введите имя для токена
  • Выберите Set expiration date и введите дату истечения срока действия токена
  • Нажмите Generate Token и сохраните этот токен в менеджере паролей или другом надёжном месте.

Завершите создание сервисной учётной записи и генерацию токена для вашего экземпляра Grafana Cloud, выполнив те же шаги, что описаны выше для экземпляра Grafana OSS/Enterprise. Это обеспечит наличие у Grizzly необходимого токена доступа для обеих платформ.

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

shell
grr config create-context grafana-onprem
grr config use-context grafana-onprem
grr config set output-format json
grr config set grafana.url $GRAFANA_ENT_INSTANCE_URL
grr config set grafana.token $GRAFANA_SOURCE_TOKEN

grr config create-context grafana-cloud
grr config use-context grafana-cloud
grr config set output-format json
grr config set grafana.url $GRAFANA_CLOUD_INSTANCE_URL
grr config set grafana.token $GRAFANA_DEST_TOKEN

В результате у вас будет настроено два контекста: один для вашей локальной установки Grafana OSS/Enterprise и один для Grafana Cloud. Команда grr config use-context позволяет переключаться между двумя экземплярами при работе с Grizzly.

Экспорт существующих ресурсов

Переключитесь в контекст grafana-onprem и используйте команду pull, чтобы получить ресурсы, которые вы хотите перенести:

shell
grr config use-context grafana-onprem
grr pull . \
  -t 'Dashboard/*' \
  -t 'Datasource/*' \
  -t 'DashboardFolder/*' \
  -t 'LibraryElement/*' \
  -t 'AlertRuleGroup/*' \
  -t 'AlertContactPoint/*' \
  -t 'AlertNotificationPolicy/*'

Эта команда извлечёт указанные ресурсы из Grafana и сохранит их в текущем каталоге.

Отправка ресурсов в ваш стек Grafana Cloud

Когда всё готово, переключитесь в контекст Grafana Cloud и используйте следующие команды, чтобы применить ресурсы к настроенному экземпляру:

shell
grr config use-context grafana-cloud

grr apply . -t 'DashboardFolder/*'
grr apply . -t 'LibraryElement/*'
grr apply . -t 'Datasource/*'
grr apply . -t 'Dashboard/*'
grr apply . -t 'AlertRuleGroup/*'
grr apply . -t 'AlertContactPoint/*'
grr apply . -t 'AlertNotificationPolicy/*'

Заполнение учётных данных источников данных

После переноса источников данных необходимо заполнить их учётные данные, такие как токены, имена пользователей или пароли. По соображениям безопасности grizzly не может читать зашифрованные учётные данные источников данных из существующего экземпляра Grafana.

Чтобы заполнить недостающую информацию для аутентификации, перейдите на страницу Connections -> Datasources в вашем новом экземпляре Grafana Cloud и убедитесь, что учётные данные для всех источников данных заданы. Вы можете пропустить источники данных, начинающиеся с grafanacloud — они управляются Grafana Cloud напрямую и предоставляют доступ к базам данных Grafana Cloud.

Если один из ваших источников данных доступен только из вашей внутренней сети, обратите внимание на документацию Private Data Source Connect.

После настройки источников данных все ваши дашборды должны быть доступны в том же виде, что и раньше.

(Необязательно) Настройка Private Data Source Connect (PDC)

Этот шаг применим только в том случае, если вы используете Grafana OSS/Enterprise для доступа к источникам данных, защищённым сетью.

Некоторые источники данных, такие как Prometheus или базы данных SQL, находятся в приватных сетях или за правилами межсетевого экрана, недоступными для Grafana Cloud. Если ваш экземпляр Grafana OSS/Enterprise размещался в той же сети, что и источник данных, вы можете обнаружить, что Grafana Cloud не может подключиться ко всем тем же источникам данных, к которым имел доступ Grafana OSS/Enterprise.

Чтобы получить доступ к этим источникам данных из Grafana Cloud, следуйте нашему руководству по настройке PDC в вашей сети, а затем настройте соответствующие источники данных Grafana на подключение с помощью PDC. Обратите внимание, что PDC необходим только для источников данных, защищённых сетью, а не для таких источников данных, как Splunk или CloudWatch, доступных через публичный интернет.

Дополнительные сведения о том, как работает PDC, см. в нашем обзорном документе.

Перенос отчётов и плейлистов с помощью HTTP API Grafana

В настоящее время Grizzly не поддерживает отчёты и плейлисты как ресурс, поэтому эту миграцию можно выполнить с помощью HTTP API Grafana с использованием команды curl.

Отчёты (только для Grafana Enterprise)

  1. Чтобы экспортировать отчёты, вам нужно обратиться к эндпоинту api/reports вашего экземпляра Grafana OSS/Enterprise. Приведённая ниже команда оболочки делает это с помощью curl для отправки запроса к эндпоинту, а затем сохраняет полученную конфигурацию отчётов в файл с именем reports.json.

    shell
    curl ${GRAFANA_ONPREM_INSTANCE_URL}/api/reports -H "Authorization: Bearer $GRAFANA_SOURCE_TOKEN" > reports.json
  2. Чтобы загрузить сохранённые в файле reports.json данные конфигурации в ваш новый экземпляр Grafana Cloud, выполните приведённую ниже команду. Команда возьмёт локальный файл reports.json и отправит его содержимое в эндпоинт api/reports вашего экземпляра Grafana Cloud.

    shell
    jq -M -r -c '.[]' < reports.json | while read -r json; do curl -XPOST ${GRAFANA_CLOUD_INSTANCE_URL}/api/reports -H"Authorization: Bearer $GRAFANA_DEST_TOKEN" -d"$json" -H 'Content-Type: application/json'; done

Плейлисты

  1. Чтобы получить плейлисты из вашего экземпляра Grafana OSS/Enterprise, отправьте HTTP GET-запрос к эндпоинту /api/playlists. Используйте следующую команду оболочки:

    shell
    mkdir playlists
    curl "${GRAFANA_ONPREM_INSTANCE_URL}/api/playlists" \
    -H "Authorization: Bearer $GRAFANA_SOURCE_TOKEN" \
    | jq -M -r -c '.[] | .uid' \
    | while read -r uid; do \
    curl "${GRAFANA_ONPREM_INSTANCE_URL}/api/playlists/$uid" \
        -H "Authorization: Bearer $GRAFANA_SOURCE_TOKEN" \
        > playlists/$uid.json; \
    done

    Приведённая выше команда выполнит HTTP-запрос к этому эндпоинту и решит несколько задач:

    • Получит массив всех плейлистов, доступных в экземпляре Grafana OSS/Enterprise.
    • Затем переберёт каждый плейлист, чтобы получить полный набор сведений о нём.
    • Наконец, сохранит спецификацию каждого плейлиста в отдельные JSON-файлы в каталоге с именем playlists
  2. Чтобы импортировать плейлисты, выполните следующую команду. Эта команда формирует HTTP POST-запрос к эндпоинту /api/playlists вашего экземпляра Grafana Cloud.

    shell
    for playlist in playlists/*; do
      curl -XPOST "${GRAFANA_CLOUD_INSTANCE_URL}/api/playlists" \
        -H "Authorization: Bearer $GRAFANA_DEST_TOKEN" \
        -H "Content-Type: application/json" \
        -d $playlist > /dev/null;
    done

Перенос конфигурации единого входа (SSO)

Стеки Grafana Cloud поддерживают все те же параметры аутентификации и авторизации, что и Grafana OSS/Enterprise, за исключением анонимной аутентификации и использования Auth proxy. Однако настройки единого входа нельзя экспортировать и импортировать так же, как дашборды, алерты и другие ресурсы.

Чтобы настроить аутентификацию SAML с нуля с помощью интерфейса или API Grafana, следуйте этим инструкциям по настройке аутентификации SAML в Grafana.

LDAP и OIDC/OAuth2 могут быть настроены в Grafana Cloud только командой поддержки Grafana Labs. Следуйте этим инструкциям, чтобы запросить настройку SSO у команды поддержки.

Перенос пользовательской конфигурации Grafana

Возможно, вы настроили конфигурацию вашего экземпляра Grafana OSS/Enterprise, например, с помощью переключателей функций, пользовательской аутентификации или параметров встраивания. Поскольку конфигурация Grafana хранится в переменных окружения или в файловой системе, где работает Grafana, пользователи Grafana Cloud не имеют к ней доступа. Однако вы можете открыть обращение в службу поддержки, чтобы попросить инженера поддержки Grafana Labs о кастомизациях.

Следующие кастомизации доступны через поддержку:

Обратите внимание, что следующие пользовательские конфигурации не поддерживаются в Grafana Cloud:

Если у вас есть пользовательская конфигурация в Grafana OSS/Enterprise, не указанная здесь, обратитесь в нашу команду поддержки, чтобы узнать, могут ли они помочь её настроить.

Дальнейшие шаги

После успешного переноса ресурсов и конфигурации из Grafana OSS/Enterprise рассмотрите следующие шаги для улучшения вашего опыта мониторинга:

  • Начало работы с Grafana Cloud: узнайте больше о функциональности, доступной в Grafana Cloud, но отсутствующей в редакциях с открытым исходным кодом или Enterprise. Подробнее см. в разделе Начало работы с Grafana Cloud
  • AWS PrivateLink для Grafana Cloud: безопасно передавайте данные телеметрии из вашего AWS Virtual Private Cloud (VPC) в Grafana Cloud, полностью в пределах сети AWS. Узнайте, как это настроить, в разделе Интеграция AWS PrivateLink.
  • Azure PrivateLink для Grafana Cloud: безопасно передавайте данные телеметрии из вашей виртуальной сети Azure в Grafana Cloud, оставаясь в сети Azure и не подвергая свой трафик воздействию публичного интернета. Узнайте, как это настроить, в разделе Интеграция AWS PrivateLink.
  • Интеграции Grafana: готовые интеграции, упрощающие мониторинг вашей инфраструктуры и приложений.