Управление ресурсами с помощью grafanactl

Caution

grafanactl выводится из эксплуатации, и весь наш опыт и наработки переходят в новый, улучшенный инструмент CLI gcx. Репозиторий grafanactl на GitHub будет заархивирован 1 июня 2026 года.

Чтобы перейти с grafanactl на gcx, выполните поиск с заменой grafanactl на gcx. Вместо grafanactl resources serve используйте gcx dev serve.

Перенос ресурсов между средами

С помощью параметров config и resources вы можете переносить ресурсы Grafana из одной среды в другую, например из среды разработки в промышленную эксплуатацию. Параметр config позволяет задать контекст конфигурации. Использование resources с командами pull, push и serve позволяет извлекать заданный ресурс из одного экземпляра и отправлять его в другой. Команда serve позволяет просматривать изменения локально перед отправкой.

Чтобы перенести ресурсы между средами, выполните следующие шаги:

Note

В настоящее время команда serve работает только с дашбордами.

Чтобы перенести ресурсы между средами, выполните следующие шаги:

Note

По умолчанию ресурсы извлекаются и отправляются из каталога ./resources. Это можно изменить с помощью флагов -p, --path, указав собственные пути на диске.

  1. Внесите изменения в дашборды и другие ресурсы через интерфейс Grafana в вашем development instance.

  2. Извлеките эти ресурсы из среды разработки на локальную машину:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources pull --path ./resources/ -o yaml
  3. (Необязательно) Просмотрите ресурсы локально перед отправкой:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources serve ./resources/
  4. Переключитесь на production instance и отправьте ресурсы:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources push -p ./resources/

Резервное копирование ресурсов Grafana

Этот рабочий процесс помогает создать резервную копию всех ресурсов Grafana из одного экземпляра и в дальнейшем восстановить их. Это полезно для тиражирования конфигурации или восстановления после сбоя.

  1. С помощью grafanactl извлеките все ресурсы из целевой среды:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources pull --path ./resources/ -o yaml
  2. Сохраните выгруженные ресурсы в системе контроля версий или облачном хранилище.

Восстановление ресурсов Grafana

  1. (Необязательно) Просмотрите резервную копию локально:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources serve ./resources/
  2. Чтобы восстановить ресурсы позже или восстановить их на другом экземпляре, отправьте сохранённые ресурсы:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources push -p ./resources/

Управление дашбордами как кодом

С помощью этого рабочего процесса вы можете определять дашборды как код и управлять ими, сохраняя их в системе контроля версий, например Git. Это полезно командам, которые хотят вести историю изменений, совместно работать над дизайном дашбордов и обеспечивать согласованность между средами.

  1. Используйте скрипт генерации дашбордов (например, с Foundation SDK). Пример реализации можно найти в репозитории практических занятий по Grafana as code.

  2. Запустите локально сервис и просмотрите результат работы генератора дашбордов:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources serve --script 'go run scripts/generate-dashboard.go' --watch './scripts'
  3. Когда результат выглядит корректно, сгенерируйте файлы манифестов дашбордов:

    Bash
    go run scripts/generate-dashboard.go --generate-resource-manifests --output './resources'
  4. Отправьте сгенерированные ресурсы в ваш экземпляр Grafana:

    Bash
    grafanactl config use-context YOUR_CONTEXT
    grafanactl resources push -p ./resources/

Изучение и изменение ресурсов из терминала

В этом разделе описано, как использовать Grafana CLI для работы с ресурсами Grafana напрямую из терминала. Эти команды позволяют просматривать, инспектировать, обновлять и удалять ресурсы, не используя интерфейс Grafana. Такой подход полезен опытным пользователям, которые хотят управлять ресурсами эффективнее или встраивать операции Grafana в автоматизированные рабочие процессы.

Поиск и удаление дашбордов с некорректными источниками данных

Используйте этот рабочий процесс, чтобы выявить дашборды, которые ссылаются на неверные или устаревшие источники данных, и при необходимости удалить их.

  1. Установите контекст для нужной среды:

    Bash
    grafanactl config use-context YOUR_CONTEXT
  2. Найдите дашборды, использующие определённые источники данных:

    Bash
    grafanactl resources get dashboards -ojson | jq '.items | map({ uid: .metadata.name, datasources: .spec.panels | map(.datasource.uid)  })'
    [
       {
          "uid": "important-production-dashboard",
          "datasources": [
             "mimir-prod"
          ]
       },
       {
          "uid": "test-dashboard-from-dev",
          "datasources": [
             "mimir-prod",
             "mimir-dev"
          ]
       },
       {
          "uid": "test-dashboard-from-stg",
          "datasources": [
             "mimir-prod",
             "mimir-stg",
             "mimir-dev"
          ]
       }
    ]

    Эта команда выводит список UID дашбордов вместе с UID источников данных, используемых на их панелях. Затем вы можете определить дашборды, использующие неверные или неожиданные источники данных.

  3. Удалите найденные дашборды напрямую:

    Bash
    grafanactl resources delete dashboards/test-dashboard-from-stg,test-dashboard-from-dev
    ✔ 2 resources deleted, 0 errors

Поиск и пометка устаревших дашбордов, использующих старую версию API

Используйте этот рабочий процесс, чтобы найти дашборды, использующие устаревшую версию API, и соответствующим образом пометить их.

  1. Установите контекст для нужной среды:

    Bash
    grafanactl config use-context YOUR_CONTEXT
  2. Выведите список всех доступных типов и версий ресурсов:

    Bash
    grafanactl resources list

    Эта команда возвращает список ресурсов, включая их версии, типы и количество:

    Bash
    GROUP                               VERSION   KIND
    folder.grafana.app                  v1        folder
    dashboard.grafana.app               v1        dashboard
    dashboard.grafana.app               v1        librarypanel
    dashboard.grafana.app               v2        dashboard
    dashboard.grafana.app               v2        librarypanel
    playlist.grafana.app                v1        playlist
  3. Найдите дашборды, которые всё ещё используют устаревшую версию API:

    Bash
    grafanactl resources get dashboards.v1.dashboard.grafana.app

    Эта команда возвращает таблицу с типом ресурса, именем ресурса и связанным пространством имён:

    Bash
    KIND         NAME                                   NAMESPACE
    dashboards   really-old-dashboard                   default
  4. Отредактируйте каждый из этих дашбордов, добавив тег deprecated:

    Bash
    grafanactl resources edit dashboards.v1.dashboard.grafana.app/really-old-dashboard -p '{"spec":{"tags":["deprecated"]}}'

Tip

Справку можно получить с помощью команды grafanactl --help.